在web.php中我有这条路线打开一个表格:
$this->namespace('Users')->prefix('users')->group(function (){
$this->get('/create' , 'UserController@create');
});
此路线返回一系列国家/地区。我使用该数组通过表单中的ajax填充选择框。
Route::namespace('API')->prefix('api')->group(function () {
$this->get('/get-country-list', 'LocationsController@index');
});
控制器:
应用\ HTTP \控制器\ API \ LocationsController
class LocationsController extends Controller
{
public function index()
{
return DB::table('countries')->pluck("name","id")->all();
}
...
应用\ HTTP \控制器\用户\ UserController中
class UserController extends Controller
{
public function create()
{
return view('panel.users.home.create.show');
}
...
如何在LocationsController@index
功能中拨打create()
?
什么是最好的方法?
答案 0 :(得分:1)
您可以在行动中尝试return redirect(route('...'));
而不是return view()
。
<强>更新强>
因为您只想获取国家/地区列表而不是重定向。所以进行小调整,将data manipulating function
与action function
:
protected function getCountries() {
return DB::table('countries')->pluck("name","id")->all();
}
function index(Request $request) {
return $this->getCountries();
}
function create(Request $request) {
$countries = $this->getCountries();
return view('panel.users.home.create.show', compact('countries'));
}
答案 1 :(得分:0)
我认为你应该尝试不同的方法。你似乎要做的是重用这个繁琐的查询:
DB::table('countries')->pluck('name', 'id')->all();
那很好!但是,您的index()
函数是一个控制器端点,它返回一个响应,并不适合在其他控制器端点中重用。当我处于类似情况时,我通常会做两件事之一,
class UserController extends Controller
{
public function index()
{
return $this->countryNames();
}
public function create()
{
// $countryNames = $this->countryNames():
return view('panel.users.home.create.show');
}
public function countryNames()
{
return DB::table('countries')->pluck('name', 'id')->all();
}
}
DB
外观。class UserController extends Controller
{
public function index()
{
return Country::names();
}
public function create()
{
// $countryNames = Country::names();
return view('panel.users.home.create.show');
}
}