我是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???
答案 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请求;它只会隐藏控件。如果您想在服务器上强制执行此操作,则需要根据模型scenario在comment
上放置相应的验证规则。
答案 2 :(得分:1)
您的部分视图不应该真正关心它的呈现位置。如果您的部分视图需要其他信息(作为决策依据),请将其作为参数传递。
$this->renderPartial('_form', array('model'=>$model, 'myparam'=>'blah'));
在您的局部视图中使用
$myparam...