问题:
最近在用yii开发,他的表单验证功能也很强大,可是发现这个activeform表单工具用不来,谁能帮忙讲解下,谢谢!
问题:
最近在用yii开发,他的表单验证功能也很强大,可是发现这个activeform表单工具用不来,谁能帮忙讲解下,谢谢!
解答:
不知道题主有没有简单的应用场景。ㄟ( ▔, ▔ )ㄏ
我这里就举个 超超超简单·用户发表评论·的表单提交的例子:
正如@鸟语花香说的,ActiveForm 要和 Model/ActiveRecord 配合使用的。
所以 先要张表 像这样 ↓
+----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(20) | NO | | NULL | | | comment | text | NO | | NULL | | | add_time | datetime | YES | | NULL | | | gender | tinyint(3) | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+
有了表,那我们就建立model咯,这里我直接用gii脚手架生成了名为 Comments 的model。
表单里需要的信息:
1. 用户名(varchar类型数据)
2. 评论内容 (text类型数据)
3. 性别(int类型数据)
我想在你的控制器的action中,至少应该这么写:
/*action*/ $model = new Comments(); //实例化 Comments model return $this->render('msg',['model'=>$model]); //将 comments model 作为参数 推进我要的视图页面
render中的 「msg」就是对应的视图页面
那接下去看下msg视图:
在msg视图中,我们常用的方法和属性大都包含在了两个关键的类中,分别是 yii\helpers\Html 和 yii\bootstrap\ActiveForm,前者负责将一些常用的html标签方法化,方便统一。 后者就是我们的主角 ActiveForm。为了让我们接下去表单中的代码简洁益与阅读,我们就在视图头部加入引用:
<!--msg.php文件--> <?php use yii\helpers\Html; use yii\bootstrap\ActiveForm; ?>
普通表单我们用 <form>...</form>
作为开头和结尾,ActiveForm也一样,只不过换了个更加酷炫的方法:
<!--msg.php文件--> <?php $form = ActiveForm::begin([...]);?> ... ... ... <?php ActiveForm::end();?>
ActiveForm就是这种结构啦!(≖ ‿ ≖)✧,begin中的省略号是我们要配置的参数,一会我们再把他替换掉,
先来看看表单要填写的条目:
<!--msg.php文件--> <?= $form->field($model,'username')->textInput(); //用户名输入框 ?> <?= $form->field($model,'comment')->textarea(); //评论内容输入框 ?> <?= $form->field($model,'gender')->radioList(['1'=>'男','2'=>'女'])->label('性别'); //性别选择框 ?>
没错,只要一行。
一行一条目,因为field自动帮你打包了(1个默认label,1个默认input,1个默认error提示)。
你需要提供的参数也就是
1.我们从action推进来的 comments model。
2.model 中的属性(对应表中的字段)。
label从哪里读出来的?Comments model 中的 attributeLabels。
error显示的规则哪里来的?Comments model 中的 rules 规则验证。
field($model,'xxx')
后面哪些紧跟的是啥?
就是那要选用的输入框类型。
ActiveForm 的 field() 方法,返回的是一个 根据你给定的 model和model属性 生成的
ActiveField对象 ,field()后紧跟的方法则是根据你的需求选择输入框的类型,还有一些自定义配置。
拿上面gender的栗子讲:
如果 只是这样写的话,则会返回给我一个默认的 textInput输入框,所以我加了 ->radioList(['1'=>'男','2'=>'女']) 把textInput改成了一个 radio单选框 ,radioList中的数组就是对应选项的值和标签。->label('性别'),我觉得我不想用 Comments model 中写好的属性翻译,所以我把label也重写了一下。
有了输入的条目,那接下来的就是提交的按钮咯:
<!--msg.php文件--> <?= Html::submitButton('发表评论', ['class' => 'btn btn-primary', 'name' => 'submit-button']) ?>
第一个参数就是你要显示的button的文字,第二个数组同样是配置,增加了button的class和name。
接下来再回到ActiveForm::begin([...])方法,看下begin中的一般参数配置:
[ 'id'=>'msg-form', 'options' => ['class'=>'form-horizontal'], 'enableAjaxValidation'=>false, 'fieldConfig' => [ 'template' => "{label}\n<p class=\"col-lg-3\">{input}</p>\n<p class=\"col-lg-8\">{error}</p>", 'labelOptions' => ['class' => 'col-lg-1 control-label'], ] ]
1.'id'=>'msg-form'
表单form 的id ,除了唯一标识的作用外,如果你开启了表单异步规则验证,这个也会作为$_POST[ajax]参数提交到action中。
2.'options' => ['class'=>'form-horizontal']
给form 加的一些属性
3.'enableAjaxValidation'=>false
这个就是「是否进行异步验证」的配置。其实它默认是false的,完全可以不用列出来,之所以这里列出是觉得有必要知道这个属性的存在,因为在复杂的表单中一般都是 设置为true。同时,在你的action中还要增加对于异步验证的方法。
4.'fieldConfig'
对表单中 将要生成的 ActiveField对象 进行配置,上面讲的是在input条目中进行配置,而这里就是统一配置。
'template' => "{label}\n
\n
{error}", 顾名思义,模板。 也就是让一个输入框套餐(label+input+error)按照我要求的样式显示出来。如果不设置,那yii会采用默认的模板 "{label}\n{input}\n{hint}\n{error}"(实在太难看(`・д・´) )。'labelOptions' => ['class' => 'col-lg-1 control-label'], 就是增加套餐中{label}的属性(以美化样式)。
下面是整个msg.php的样子:
<!-- msg.php --> <?php use yii\helpers\Html; use yii\bootstrap\ActiveForm; ?> <p class="container"> <!-- 开始帅气的表单组件--> <?php $form = ActiveForm::begin([ 'id' => 'msg-form', 'options' => ['class'=>'form-horizontal'], 'enableAjaxValidation'=>false, 'fieldConfig' => [ 'template' => "{label}\n<p class=\"col-lg-3\">{input}</p>\n<p class=\"col-lg-8\">{error}</p>", 'labelOptions' => ['class' => 'col-lg-1 control-label'], ] ]); ?> <!--表单条目--> <?= $form->field($model,'username')->textInput(); ?> <?= $form->field($model,'comment')->textarea(); ?> <?= $form->field($model,'gender')->radioList(['1'=>'男','2'=>'女'])->label('性别'); ?> <!--提交按钮--> <p class="form-group"> <p class="col-lg-offset-1 col-lg-11"> <?= Html::submitButton('发表评论', ['class' => 'btn btn-primary', 'name' => 'submit-button']) ?> </p> </p> <!--结束帅气的表单组件--> <?php ActiveForm::end();?> </p>
到这里,如果点了提交后,post 的内容将会是这样的
[_csrf] => RHFOTmg1TUpwNX0sKQ0CEnQ/ES8uQyM9HhIcFhBxHnM1QhQELnR9BA== [Comments] => Array ( [username] => cookedsteak [comment] => Here comes the comment ! [gender] => 2 ) [ajax] => msg-form [submit-button] => undefined
之后就是在action中按照你自己的需求处理数据啦。
以上是个人对ActiveForm的理解,可能有些地方过于简单,只希望能帮到同是初学者的yiier(づ ̄ ³ ̄)づ
Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.
Dalam PHP, gunakan kata kunci klon untuk membuat salinan objek dan menyesuaikan tingkah laku pengklonan melalui kaedah Magic \ _ _ _. 1. Gunakan kata kunci klon untuk membuat salinan cetek, mengkloning sifat objek tetapi bukan sifat objek. 2. Kaedah klon \ _ \ _ boleh menyalin objek bersarang untuk mengelakkan masalah menyalin cetek. 3. Beri perhatian untuk mengelakkan rujukan pekeliling dan masalah prestasi dalam pengklonan, dan mengoptimumkan operasi pengklonan untuk meningkatkan kecekapan.
PHP sesuai untuk pembangunan web dan sistem pengurusan kandungan, dan Python sesuai untuk sains data, pembelajaran mesin dan skrip automasi. 1.PHP berfungsi dengan baik dalam membina laman web dan aplikasi yang cepat dan berskala dan biasanya digunakan dalam CMS seperti WordPress. 2. Python telah melakukan yang luar biasa dalam bidang sains data dan pembelajaran mesin, dengan perpustakaan yang kaya seperti numpy dan tensorflow.
Pemain utama dalam tajuk cache HTTP termasuk kawalan cache, ETAG, dan modifikasi terakhir. 1.Cache-Control digunakan untuk mengawal dasar caching. Contoh: Cache-Control: Max-Age = 3600, Awam. 2. ETAG mengesahkan perubahan sumber melalui pengenal unik, Contoh: ETAG: "686897696A7C876B7E". 3. Modified Last Menunjukkan Masa Pengubahsuaian Terakhir Sumber, Contoh: Modified Last: Wed, 21OCT201507: 28: 00GMT.
Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.
PHP adalah bahasa skrip sisi pelayan yang digunakan untuk pembangunan web dinamik dan aplikasi sisi pelayan. 1.Php adalah bahasa yang ditafsirkan yang tidak memerlukan kompilasi dan sesuai untuk perkembangan pesat. 2. Kod PHP tertanam dalam HTML, menjadikannya mudah untuk membangunkan laman web. 3. PHP memproses logik sisi pelayan, menghasilkan output HTML, dan menyokong interaksi pengguna dan pemprosesan data. 4. PHP boleh berinteraksi dengan pangkalan data, penyerahan borang proses, dan melaksanakan tugas-tugas sampingan pelayan.
PHP telah membentuk rangkaian sejak beberapa dekad yang lalu dan akan terus memainkan peranan penting dalam pembangunan web. 1) PHP berasal pada tahun 1994 dan telah menjadi pilihan pertama bagi pemaju kerana kemudahan penggunaannya dan integrasi lancar dengan MySQL. 2) Fungsi terasnya termasuk menghasilkan kandungan dinamik dan mengintegrasikan dengan pangkalan data, yang membolehkan laman web dikemas kini secara real time dan dipaparkan secara peribadi. 3) Aplikasi dan ekosistem PHP yang luas telah mendorong kesan jangka panjangnya, tetapi ia juga menghadapi kemas kini versi dan cabaran keselamatan. 4) Penambahbaikan prestasi dalam beberapa tahun kebelakangan ini, seperti pembebasan Php7, membolehkannya bersaing dengan bahasa moden. 5) Pada masa akan datang, PHP perlu menangani cabaran baru seperti kontena dan microservices, tetapi fleksibiliti dan komuniti aktif menjadikannya boleh disesuaikan.
Manfaat utama PHP termasuk kemudahan pembelajaran, sokongan pembangunan web yang kukuh, perpustakaan dan kerangka yang kaya, prestasi tinggi dan skalabilitas, keserasian silang platform, dan keberkesanan kos. 1) mudah dipelajari dan digunakan, sesuai untuk pemula; 2) integrasi yang baik dengan pelayan web dan menyokong pelbagai pangkalan data; 3) mempunyai rangka kerja yang kuat seperti Laravel; 4) Prestasi tinggi dapat dicapai melalui pengoptimuman; 5) menyokong pelbagai sistem operasi; 6) Sumber terbuka untuk mengurangkan kos pembangunan.
Apl berkuasa AI untuk mencipta foto bogel yang realistik
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Gambar buka pakaian secara percuma
Penyingkiran pakaian AI
Menjana ai hentai secara percuma.
Disyorkan: Versi Win, menyokong gesaan kod!
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.
Versi Cina, sangat mudah digunakan
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)