Laravel 4:为具有急切加载数据的模型构建表单

时间:2013-05-17 22:53:09

标签: php laravel laravel-4

使用laravel 4,您可以绑定到表单中的模型。

例如,以下代码会将表单绑定到Post。

$post = Post::find(1);

Form::model($post, [
    'action' => ['PostController@update', $post->id], 
    'method' => 'PUT'
])

据我所知,为了保持数据库结构良好,我将有一个单独的表类别。所以,下面我会急切地将我的类别加载到我的$ post。

$post = Post::with('categories')->find(1);

我想在我的表单中修改类别。但是如何?

我想html输出最终会像:

<input type="text" name="categories[0][value]" />

......但是,这里有什么正确的方法?我想这是非常常见的,因为只要您的内容类型存储在多个表中,就会遇到它。

1 个答案:

答案 0 :(得分:2)

我做了类似于用户/角色的事情,我认为它与你的帖子/类别有类似的关系。

在PostController创建/编辑操作中,发送所有类别的对象:

$categories = Category::all();
return View::make('post.edit')->with(array('categories' => $categories)) // truncated for brevity

在您的视图中:

@foreach ($post->categories as $category)
    {{ Form::checkbox('p_categories[]', $category->id, false, array('id' => $category->id)) . Form::label($category->id, $category->name) }}<br />
@endforeach

在PostController存储/更新操作中:

$post->categories()->sync(Input::get('p_categories'));

此外,这是一篇关于同一概念的文章。 Making many-to-many relationships easy

希望这有帮助!