如何在Laravel中处理故意未定义的变量?

时间:2016-03-24 16:13:12

标签: php laravel blade

我在Laravel中有一个视图,我用它来插入记录和更新记录。说到复选框,我使用以下代码:

      {!! Form::checkbox('active', 1, $info->active) !!}

$info是指从控制器传递给视图的数据库中检索到的记录(我执行$info = MyModel::findOrFail($id)之类的操作),这显然只适用于我编辑记录时。当我创建一个新记录时,这个变量不存在,我收到这个错误:

Undefined variable

这完全有道理,但问题是:解决这个问题的最佳方法是什么。我应该使用条件陈述吗?我应该创建一个空变量吗?我应该使用两个不同的复选框吗?这里推荐什么?

3 个答案:

答案 0 :(得分:1)

您只需为创建表单设置$info = new MyModel()即可。

从概念上讲,它可以保持模板清洁,避免重复。

答案 1 :(得分:0)

您应该使用两个单独的视图进行插入和删除。这就是路由资源具有索引,创建,存储,显示,编辑,更新,删除等方法的原因。

在您的情况下,我建议您使用两个视图并遵循约定优于配置原则:

public function create()
{
  return view('post.create');
}

public function store(Request $request)
{
  $post = Post::create($request->all());
}

public function edit()
{
  return view('post.edit');
}

public function update($id, Request $request)
{
  $post = Post::whereId($id)->update($request->all());
}

答案 2 :(得分:0)

创建时可以执行以下操作:

// Controller.
$user = new User;

// View
Form::model($user, ['route' => ['user.store', $user]])

我之前使用过这种方法来解决你的问题。