在Laravel 5.2注册上添加动态下拉列表

时间:2016-03-23 05:08:07

标签: php laravel laravel-5 laravel-authorization

我想在我的注册页面上添加动态下拉列表 但我不知道怎么做,因为我是laravel的新人。

我不知道从哪里开始。

我想在登记表上加上2下拉列表

我们从表中获取值

首先是“小组” 小组包括: 1.管理员 2.用户 3.嘉宾

第二是“部门”(禁用) 如果第一个下拉列表是管理员或访客,则第二个下拉列表禁用。 但是如果我们选择用户,那么部门下拉启用并从部门表中获取数据。

2 个答案:

答案 0 :(得分:2)

在我看来,最好的方法是创建一个控制器和一个模型。

php artisan make:controller YOUR_CONTROLLER_NAME_HERE

php artisan make:model YOUR_MODEL_NAME_HERE

这样做之后应该非常简单。

另一个很好的库是

"illuminate/html": "5.*"

将它放在您的composer.json中的require {}部分。

然后你需要在提供者部分的config / app.php中添加服务提供者,如下所示:

Illuminate\Html\HtmlServiceProvider

最后一部分在别名部分的config / app.php中输入这两行:

'Form'=> 'Illuminate\Html\FormFacade',
'HTML'=> 'Illuminate\Html\HtmlFacade'

现在在您的控制器中包含您的模型和视图外观,如下所示

use App\MyModel;
use Illuminate\Support\Facades\View;

在构造函数中,您需要将模型注入控件中。

private $myModel;
__constructor(MyModel $myModelParameter) {
    $this->myModel = $myModelParameter;
}

现在在你的调用函数内的控制器中(例如create())添加这样的东西。

public function create() {
    $myModelList = $this->myModel->lists('name', 'id');
    return View::make('myController.create')->with(compact('myModelList'));
}

现在终于进入了html / template文件。在/resources/views/myController/create.blade.php例如add

    @extends('app')

    @section('content')

      {!! Form::open(['url' => 'myController/create', 'method' => 'POST']) !!}
        @include('myController.partials.form', ['submitButtonText' => 'Create myController Item'])
      {!! Form::close() !!}

@endsection

现在在一个名为/ resources / view / myController / partials的新文件夹中添加form.blade.php

<div class="form-group">
  {!! Form::label('myModel_id', 'MyModel Selector :') !!}
  {!! Form::select('myModel_id', $myModelList, null, array('id' => 'myModel_id', 'class' => 'form-control input-sm')) !!}
</div>

<div style="clear:both;"><br /></div>

<div class="form-actions">
  <div class="form-group">
    {!! Form::submit($submitButtonText, ['class' => 'btn btn-primary form-control']) !!}
  </div>
</div>

这可能看起来像很多步骤,但它会使一切都非常干净,特别是一旦项目开始变大。这也适用于您的edit.blade.php您当然只需创建一个edit.blade.php文件并包含该表单。由于您使用的是模型,因此它会检测模型的正确设置,并以相同的方式提取值。当然你可以做更复杂的事情,但我建议你在laracasts上观看免费的首发视频。它会向你显示这样的东西。

如果你遇到困难,请告诉我,我们可以扩展这个答案。

答案 1 :(得分:0)

试试这个:

例如,您希望国家/地区列表在注册表单中显示动态。

在控制器中

class YourController extends Controller {

   protected $countryArray;

   public function __construct() {
       $this->countryList = ['' => 'Select Country'] + Country::lists('name', 'id')->all();
   }

   public function create() {

       $countryList = $this->countryList;
       return view('frontend.registration', compact('countryList'));
   }
}

在模板中

<select id="country_id" name="country_id" class="form-control">
    <option value="">Select Country</option>
    @foreach ($countryList as $key => $country)
    <option value="{!! $country['id'] !!}"  !!}>{!! $country['name'] !!}</option>
    @endforeach
</select>