Php Laravel路线和可选参数
我在laravel 5.4中的控制器有一些问题 My routes.php:Php Laravel路线和可选参数,php,laravel,laravel-5,Php,Laravel,Laravel 5,我在laravel 5.4中的控制器有一些问题 My routes.php: Route::group(array('domain' => '{subdomain}.site.com','as'=>'www::','middleware'=>array('web','varnish')), function() { Route::any('/material/{page?}/', [ 'as' => 'www_material', 'uses' =&g
Route::group(array('domain' => '{subdomain}.site.com','as'=>'www::','middleware'=>array('web','varnish')), function() {
Route::any('/material/{page?}/', [
'as' => 'www_material', 'uses' => 'www\MaterialController@index'
]);
});
我的控制器:
<?php namespace App\Http\Controllers\www;
use App\Http\Controllers\Controller;
use View;
use DB;
use Illuminate\Http\Request;
class MaterialController extends Controller {
public function index($subdomain, $page = 1, Request $request)
{
echo $subdomain;
echo $page;
//...some code
}
}
但是www.site.com/material/
:
Type error: Too few arguments to function App\Http\Controllers\www\MaterialController::index(), 2 passed and exactly 3 expected
我不明白为什么会发生这种情况,因为页面的默认值是1
有人能帮我吗?我一个人解决不了这个问题
谢谢。尝试删除下面提到的{page?}旁边的尾随斜杠,然后重新运行代码
Route::any('/material/{page?}', [
'as' => 'www_material', 'uses' => 'www\MaterialController@index'
])) 尝试删除下面提到的{page?}旁边的尾随斜杠,然后重新运行代码
Route::any('/material/{page?}', [
'as' => 'www_material', 'uses' => 'www\MaterialController@index'
])) 您的问题是参数在index方法中的顺序 由于请求对象将始终存在,请将其放在$subdomain之后,然后是$page 如上例5所述: 请注意,当使用默认参数时,任何默认值都应该位于任何非默认参数的右侧;否则,事情就不会像预期的那样发生
您的问题是参数在索引方法中的顺序 由于请求对象将始终存在,请将其放在$subdomain之后,然后是$page 如上例5所述: 请注意,当使用默认参数时,任何默认值都应该位于任何非默认参数的右侧;否则,事情就不会像预期的那样发生
这与Laravel帐户附带的.htaccess文件没有任何区别。这与Laravel帐户附带的.htaccess文件没有任何区别。根据PHP文档(示例#5)中关于默认参数顺序的说明:“任何默认值都应该位于任何非默认参数的右侧;否则,事情将不会像预期的那样“按照PHP文档(示例#5)中默认参数的顺序”运行:“任何默认值都应该位于任何非默认参数的右侧;否则,事情将无法按预期进行'
public function index(Request $request, $subdomain, $page = 1)
{
echo $subdomain;
echo $page;
//...some code
}