【问题标题】:How to check which action is called in yii?如何检查yii中调用了哪个动作?
【发布时间】:2013-10-11 12:29:35
【问题描述】:

我是 yii 的新手,我正在尝试编辑 yii 自动为我们创建的 _form.php_form.php 已由 create.php 视图文件使用 <?php $this->renderPartial('_form', array('model'=>$model)); ?>
现在在 _form.php 中使用以下代码

<div class="row">
        <?php echo $form->labelEx($model,'comment'); ?>
        <?php echo $form->textArea($model,'comment',array('rows'=>6, 'cols'=>50)); ?>
        <?php echo $form->error($model,'comment'); ?>
    </div> 

我希望仅当此文件由 create.php 而不是由 update.php 文件呈现时才显示此行。我可以使用 IF 条件执行此操作,但我不知道如何检查哪个文件呈现了此表单。 所以我的问题是

how can i check which action has been called or which file is rendering the _form.php???

【问题讨论】:

    标签: php forms yii


    【解决方案1】:

    很简单:

    <?php if ($this->action->id == "update") ?>
    

    【讨论】:

    • hahahahahha .... 很长一段时间以来我都在做同样的事情,但它没有工作,但是当我从你的答案中复制它时它开始工作:-p ....顺便说一句,非常感谢朋友:)
    【解决方案2】:

    您并不想将局部视图与其所有者的名称结合起来。您可能想要的是仅在模型是新记录时显示评论区域。你可以这样做:

    <?php if($model->isNewRecord) : ?>
    <div class="row">
        <?php echo $form->labelEx($model,'comment'); ?>
        <?php echo $form->textArea($model,'comment',array('rows'=>6, 'cols'=>50)); ?>
        <?php echo $form->error($model,'comment'); ?>
    </div> 
    <?php endif; ?>
    

    请注意,这不会阻止某人为正在更新的模型制作包含 comment 值的 HTTP 请求;它只会隐藏控件。如果您想在服务器上强制执行此操作,您需要根据模型的scenariocomment 上放置适当的验证规则。

    【讨论】:

      【解决方案3】:

      您的局部视图不应该真正关心它是从哪里渲染的。如果您的局部视图需要其他信息(作为决策依据),请将其作为参数传递。

      $this->renderPartial('_form', array('model'=>$model, 'myparam'=>'blah'));
      

      在你的局部视图中使用

      $myparam...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-12
        • 1970-01-01
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-06
        相关资源
        最近更新 更多