Yii在模型中有个场景属性(scenario),文档(http://www.yiiframework.com/doc/guide/1.1/zh_cn/form.model)中提到如果在场景中执行块赋值,就只有出现在该场景验证规则中的特性会被块赋值,例如:
array('username, password', 'required', 'on'=>'login, register'), array('email', 'required', 'on'=>'register'),
如果我们在login场景中执行块赋值,就只有username和password会被块赋值,因为只有它们出现在login场景的验证规则中。 如果场景是register,这三个特性就都会被块赋值。
在实际的应用中,创建一个LoginForm模型拥有“username, password, email”三个属性并设置默认值,然后在控制器中执行:
$model = new LoginForm('login'); $model->attributes = $_POST; // $_POST = array('username' => 'value', 'password' => 'value');
此时得到的$model->attributes属性中还是含有LoginForm模型所有的3个属性的,不知道要怎样才能得到经过验证器过滤后只含有username和password这两个键的属性,因为可能我需要将这两个字段插入数据库但是不需要有email属性,或者我需要将这两个属性输出到视图中附加到URL参数后面
另外咨询下Yii::app()->clientScript->registerCssFile
该方法在视图中调用怎么自定义插入位置,默认会插入到title标签的前面,这样不太美观,另外不能自定义位置也可能跟插件或其它的样式冲突。
回复内容:
Yii在模型中有个场景属性(scenario),文档(http://www.yiiframework.com/doc/guide/1.1/zh_cn/form.model)中提到如果在场景中执行块赋值,就只有出现在该场景验证规则中的特性会被块赋值,例如:
array('username, password', 'required', 'on'=>'login, register'), array('email', 'required', 'on'=>'register'),
如果我们在login场景中执行块赋值,就只有username和password会被块赋值,因为只有它们出现在login场景的验证规则中。 如果场景是register,这三个特性就都会被块赋值。
在实际的应用中,创建一个LoginForm模型拥有“username, password, email”三个属性并设置默认值,然后在控制器中执行:
$model = new LoginForm('login'); $model->attributes = $_POST; // $_POST = array('username' => 'value', 'password' => 'value');
此时得到的$model->attributes属性中还是含有LoginForm模型所有的3个属性的,不知道要怎样才能得到经过验证器过滤后只含有username和password这两个键的属性,因为可能我需要将这两个字段插入数据库但是不需要有email属性,或者我需要将这两个属性输出到视图中附加到URL参数后面
另外咨询下Yii::app()->clientScript->registerCssFile
该方法在视图中调用怎么自定义插入位置,默认会插入到title标签的前面,这样不太美观,另外不能自定义位置也可能跟插件或其它的样式冲突。
此时得到的$model->attributes属性中还是含有LoginForm模型所有的3个属性的,不知道要怎样才能得到经过验证器过滤后只含有username和password这两个键的属性,因为可能我需要将这两个字段插入数据库但是不需要有email属性
即使得到的是3个属性值,但是也就会验证场景login
下的属性值,其他场景不做验证。
如果非要得到其中2个属性值,可以参考下面的写法。
//rule array('username, password', 'required', 'on'=>'login, register'), array('email', 'required', 'on'=>'register'),
//controller $model = new LoginForm('login'); $model->username= $_POST['username']; $model->username= $_POST['password']; // $_POST = array('username' => 'value', 'password' => 'value');
实际的应用中,比如编辑和新增使用一个表单模型来做数据验证(这里先不考虑AR)其中有一个字段“field”默认值是“1”,该字段新增记录的时候会做修改。
如果数据库中已有一条记录,此时上来一个编辑该条记录的请求(POST不包含“field”字段),使用表单模型进行验证,$model->attributes = $_POST
,得到的attributes属性中是会包含“field”字段,且值会为1,那这时如果用attributes属性执行update就会出现错误的修改。
本身用attributes特性赋值就是为了方便,如果我POST里有大量数据一条条赋值就太累了。
在使用“validate()”方法做验证时,就只有出现在该场景验证规则中的特性才会做验证,但是要怎么获取经过验证后的结果呢?

thesecrettokeepingaphp-poweredwebsterunningsmootlyunderheavyloadinvolvesseveralkeystrategies:1)emform opcodecoduceSciptionexecutiontime、2)aatabasequerycachingwithiThing withiThistolessendavasoload、

コードをより明確かつ維持しやすくするため、依存関係が関心(DI)に注意する必要があります。 1)DIは、クラスを切り離すことにより、よりモジュール化されます。2)テストとコードの柔軟性の利便性を向上させ、3)DIコンテナを使用して複雑な依存関係を管理しますが、パフォーマンスの影響と円形の依存関係に注意してください。

はい、最適化されたAphPossibleandessention.1)CachingingusapCutoredatedAtabaseload.2)最適化、効率的なQueries、およびConnectionPooling.3)EnhcodeCodewithBultinctions、Avoididingglobalbariables、およびUsingopcodeching

keyStrategIestsoSificlyvoostphpappliceperformanceare:1)useopcodecachinglikeToreexecutiontime、2)最適化abaseの相互作用とプロペラインデックス、3)3)構成

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
