各位大侠和thansk大家好好读一读。
我正在制作一个网站,只是为了好玩和学习yii。该网站是一个可用于报告盗版链接的应用程序。我有一个输入文件,其中我提供了一个链接,而且我有一个下拉菜单,您可以从中选择要提交的链接类型。根据您选择的值,我希望在提交的链接上执行不同的验证规则。如果我在我的表达中不清楚,请随时访问www.youtubetv.it,在主页面上您将看到输入字段和下拉列表。
代码如下;
<div class="span4">
<div class="input-prepend"><span class="add-on" style="height: 50px;">
<i class="icon-4x icon-globe" style="line-height: 54px;"></i></span>
<?php
echo $form->textField($model, 'link', array(
'prepend' => '<i class="icon-4x icon-globe" style="line-height: 54px;"></i>',
'class' => 'span12', 'maxlength' => 999,
'style' => 'height:60px;font-size: 22px;width: 400px;',
));
?>
</div>
</div>
<div class="span4 offset1">
<?php
echo $form->dropDownList($model, 'category', CHtml::listData(Lookup::model()->findAll('type="kind"'), 'code', 'name'), array(
'prompt' => 'Select Type',
'class' => 'span12',
'style' => 'height:60px;font-size: 22px;',
));
?>
</div>
模型中的当前验证规则
public function rules() {
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('category, link', 'required'),
array('id_user', 'numerical', 'integerOnly' => true),
array('link', 'length', 'max' => 999),
array('link', 'url',
'allowEmpty' => false,
'defaultScheme' => null,
//'pattern' => 'esspressione regolare',
'message' => 'The specified model does not exist.',
'validSchemes' => (array('http', 'https'))
),
array('category, web_page', 'length', 'max' => 255),
array('creation_date', 'default',
'value' => new CDbExpression('NOW()'),
'setOnEmpty' => false,
'on' => 'insert'),
array('id_public_link, category, id_user, link, creation_date', 'safe', 'on' => 'search'),
);
}
如果有人能够向我展示如果有人从下拉列表中选择电影,我将如何验证“网址”,我将不胜感激。
如果我不清楚,请随时要求澄清
答案 0 :(得分:3)
Yii有一个所谓的场景用于验证规则,你需要的是将你喜欢的任何场景名称的“on”键添加为你想要的规则中的值。然后将模型的场景设置为$ model-&gt; scenario ='Your scenario'; e.g。
public function rules() {
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('category, link', 'required'),
array('id_user', 'numerical', 'integerOnly' => true),
array('link', 'length', 'max' => 999),
array('link', 'url',
'allowEmpty' => false,
'defaultScheme' => null,
//'pattern' => 'esspressione regolare',
'message' => 'The specified model does not exist.',
'validSchemes' => (array('http', 'https')),
'on'=>'urlcheck'
),
array('category, web_page', 'length', 'max' => 255),
array('creation_date', 'default',
'value' => new CDbExpression('NOW()'),
'setOnEmpty' => false,
'on' => 'insert'),
array('id_public_link, category, id_user, link, creation_date', 'safe', 'on' => 'search'),
);
}
然后在你的行动中使用:
...
$type = isset($_POST['Lookup']['type'])?$_POST['Lookup']['type']:false;
if($type === '1') //as I assume from your website '1' is a Movie
$model->scenario = 'urlcheck';
...
顺便说一句,您可以看到规则中已经有'creation_date'属性。 Scenation'insert'是新记录的默认情景。您可以在here
了解更多Yii中的默认情景