我是Laravel的新手并尝试了一些东西。希望你们能指出我正确的方向。
我有一个表单在页面上添加类别,其中包含所有类别的概述。现在,当您要添加或编辑类别时,我将路由到同一页面。问题是,我希望正常的添加表单显示当url是category / add时,当url是category / edit / id时,我希望它显示要编辑的表单(使用表单模型绑定)。我将代码放在if else语句中,但它总是显示编辑表单,因此如果我想在url类别上添加新类别,我会收到错误,因为它是编辑表单。
这是index.bade.php中的代码:
@if(Request::url() === 'categories' )
{{ Form::open(array('url' => 'category/add', 'class' => 'form-horizontal')) }}
@else
{{ Form::model($category, array(
'url' => 'category/edit/'.$category->id ,
$category->id,
'class' => 'form-horizontal'))
}}
@endif
我的控制器:
public function index()
{
$categories = Category::get();
$category = new Category();
View::share('title', 'Mini Blog - Categories');
$view = View::make('category.index')->with('category', $category);
$view->categories = $categories;
return $view;
}
public function edit($id)
{
$categories = Category::get();
$category = Category::find($id);
View::share('title', 'Mini Blog - Edit category');
return View::make('category.index')->with(array('category' => $category, 'categories' => $categories));
}
这是要走的路吗?或者有更好的方法吗?
答案 0 :(得分:0)
有一种更好的方式。
在您的控制器中执行以下操作:
public function create()
{
return View::make('create');
}
public function edit($id)
{
return View::make('edit')->withId($id);
}
然后在你的观点中你有
<强> Create.blade.php 强>
{{ Form::open(array('url' => 'category/add', 'class' => 'form-horizontal')) }}
@include ('form')
{{ Form::close() }}
<强> Edit.blade.php 强>
{{ Form::model($category, array('url' => 'category/edit/'.$category->id, category->id, 'class' => 'form-horizontal')) }}
@include ('form')
{{ Form::close() }}
<强> Form.blade.php 强>
//Put your HTML form stuff here
答案 1 :(得分:0)
我建议您不依赖于模型变量来检查URL。 Ever Eloquent模型有一个属性exists
,它告诉您模型是从数据库加载还是新实例。
@if( ! $category->exists)
{{ Form::open(array('url' => 'category/add', 'class' => 'form-horizontal')) }}
@else
{{ Form::model($category, array(
'url' => 'category/edit/'.$category->id ,
$category->id,
'class' => 'form-horizontal'))
}}
@endif
实际上你也可以将Form::model
与空模型一起使用,所以你应该可以将它减少到这个:
{{ Form::model($category, array(
'url' => ($category->exists ? 'category/edit/'.$category->id : 'category/add'),
'class' => 'form-horizontal'))
}}