如何检查yii中调用的操作?

时间:2013-10-11 12:29:36

标签: php forms yii

我是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???

3 个答案:

答案 0 :(得分:6)

很简单:

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

答案 1 :(得分:4)

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

<?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上放置相应的验证规则。

答案 2 :(得分:1)

您的部分视图不应该真正关心它的呈现位置。如果您的部分视图需要其他信息(作为决策依据),请将其作为参数传递。

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

在您的局部视图中使用

$myparam...