如何在 Laravel Blade 中创建动态生成的下拉列表
How create dynamic generated dropdown in Laravel Blade
我有一个 table statuses
(第 id
、statusename
列)并希望显示一个基于此 table 的 "select" 列表动态地。
我的模型:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Statuses extends Model
{
protected $table = "CaseStatus";
}
控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Statuses;
class StatusesList extends Controller
{
public function getstatuseslist() {
$list = Statuses::all();
return view('forms.statuses')->with('data', $list);
}
}
statuses.blade.php
:
<select name="Statuses">
@foreach ($data as $page)
<option value="{{ $page->ID }}">{{ $page->StatuseName }}</option>
@endforeach
</select>
路线:
Route::any('/list/statuses','StatusesList@getstatuseslist');
如果我打开 url http://myproject/list/statuses - 它工作正常,我看到了下拉列表。
但是,如果我将我的 statuses.blade.php
包含在另一个模板的表单中:
@include('forms.statuses')
我收到错误
"Undefined variable data".
如何正确包含?
我的 Laravel 版本是 5.4。
我认为您的 $data
仅在从您定义的控制器方法传递时传递给您的 'forms.statuses'
视图。
如果您想将此数据用于包含 'forms.statuses'
的其他 "parent" 视图,您必须在 returns 和 'parent' 视图的控制器中再次传递它.
有一种方法可以让它在许多视图中保持不变。有关详细信息,请参阅 'view composer'。这是在 Laravel 文档中查看作曲家的 link:https://laravel.com/docs/5.4/views#view-composers
首先,如果您有 table statuses
,您的模型名称应该是 status
.
你的功能在另一个 blade 中不起作用的问题是因为你的另一个 blade 控制器没有连接到你的模型,所以它不知道从哪里获得你要求的信息。解决这个问题很简单,只需添加您的模型代码 this->
public function getstatuseslist() {
$list = Statuses::all();
return view('your_other_view')->with('data', $list);
}
进入那个页面控制器。
别忘了在你的第二个控制器中调用你的模型。
use App\Statuses;
之后在你的第二个 blade 中也能正常工作。
我有一个 table statuses
(第 id
、statusename
列)并希望显示一个基于此 table 的 "select" 列表动态地。
我的模型:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Statuses extends Model
{
protected $table = "CaseStatus";
}
控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Statuses;
class StatusesList extends Controller
{
public function getstatuseslist() {
$list = Statuses::all();
return view('forms.statuses')->with('data', $list);
}
}
statuses.blade.php
:
<select name="Statuses">
@foreach ($data as $page)
<option value="{{ $page->ID }}">{{ $page->StatuseName }}</option>
@endforeach
</select>
路线:
Route::any('/list/statuses','StatusesList@getstatuseslist');
如果我打开 url http://myproject/list/statuses - 它工作正常,我看到了下拉列表。
但是,如果我将我的 statuses.blade.php
包含在另一个模板的表单中:
@include('forms.statuses')
我收到错误
"Undefined variable data".
如何正确包含? 我的 Laravel 版本是 5.4。
我认为您的 $data
仅在从您定义的控制器方法传递时传递给您的 'forms.statuses'
视图。
如果您想将此数据用于包含 'forms.statuses'
的其他 "parent" 视图,您必须在 returns 和 'parent' 视图的控制器中再次传递它.
有一种方法可以让它在许多视图中保持不变。有关详细信息,请参阅 'view composer'。这是在 Laravel 文档中查看作曲家的 link:https://laravel.com/docs/5.4/views#view-composers
首先,如果您有 table statuses
,您的模型名称应该是 status
.
你的功能在另一个 blade 中不起作用的问题是因为你的另一个 blade 控制器没有连接到你的模型,所以它不知道从哪里获得你要求的信息。解决这个问题很简单,只需添加您的模型代码 this->
public function getstatuseslist() {
$list = Statuses::all();
return view('your_other_view')->with('data', $list);
}
进入那个页面控制器。
别忘了在你的第二个控制器中调用你的模型。
use App\Statuses;
之后在你的第二个 blade 中也能正常工作。