Laravel 4下拉列表


Laravel 4 drop down list

我制作了一个下拉列表,从数据库的"oneways"表中获取"destination from"值。在此遵循本教程:http://www.laravel-tricks.com/tricks/easy-dropdowns-with-eloquents-lists-method

但每当我尝试运行它时,它都会给我这样的错误:未定义的变量:categories这里似乎有什么问题?我真的是个新手。laravel上的新手。

这是我的代码:

onewayflight.blade.php

  $categories = Category::lists('destination-from', 'title');
      {{ Form::select('category', $categories) }}

单程飞行控制器.php

  public function onewayflightresults()
{
  return View::make('content.onewayflight');
  $list = DB::table('oneways');
  $listname = Oneways::lists('destination-from');
  $content = View::make('content.onewayflight', array('list'=>$list, 'listname'=>$listname));
}

我真的不确定我遗漏了什么。我还想知道这个模型是否与此有关?

除了@jd182的建议(因为我没有评论的声誉,所以我使用了答案);你确定lists()函数/faceade返回的值不是null。PHP有时认为null值未定义。

而且你的blade语法是错误的。如果您想在blade文件中定义一个变量(这是不建议的),您应该将其包装在标签周围,并将其作为常规php文件使用。

模板中获取类别的代码需要用PHP标记包围,否则将无法执行。但更好的是,把它移到你的控制器上,它就在那里。

此外,在您的控制器中,您将返回onewayflight()顶部的视图-之后将不执行任何操作。

所以改变它的工作方式是这样的,你应该没事:

单程航班.叶片.php

{{ Form::select('category', $categories) }}

单程飞行控制器.php

 public function onewayflight()
 {
    $categories = Category::lists('destination-from', 'title'); 
    return View::make('content.onewayflight', array('categories' => $categories));
  }

此外,在routes.php中,路由应该如下所示:

Route::get('/your-route-path', [
    'as' => 'your_route_name',
    'uses' => 'onewayflightcontroller@onewayflight'
]);