使用我的典型项目布局,我可能会遇到以下情况:
Controllers
| |
| - MoviesController.php
|
Models
| |
| - Movie.php
Views
| |
| - Movies
| |- Create.php
| |- Edit.php
| - Partials
| |- _MovieForm.php
MoviesController
包含两个动作 MoviesController
Create()
和Edit($id)
,它们具有各自的views 。 我个人也将执行第三项操作,处理这两项操作提交的表单:
public function Save()
{
//...snip...
}
Create()
只是加载相应的视图。 Edit()
稍有不同,它首先使用我们的Model从数据库中检索现有记录,然后再将其传递到视图中。
这两个视图具有嵌套的“部分”,这是常用HTML的片段-在本例中为_MovieForm.php
,它具有我们的表单输入(能够显示传入的值)。
表单还包含我们行ID的隐藏输入字段。 仅当我们调用Edit()
动作时才给它一个值。
表单提交给MoviesController的Save()
方法,该方法检查我们是否有传递的行ID。 如果是这样,请从数据库中获取行(再次由模型表示),更新值,然后调用模型的Save()
方法。 Model::Save()
对数据运行验证逻辑,然后保存到数据库,或者将数据与验证错误消息一起传递回视图。
希望这可以帮助 :)