Laravel 5に問題があります。正確には、解決策が見つかりません。C#(ASP.NET MVC)では、簡単に解決できます。たとえば、これらのルートがあります(簡単にするために、ルートの内容と関数ヘッダーを入力するだけです)。
/{category}/Page{page}
/Page{page}
/{category}
関数は製品コントローラー内で定義されます。関数ヘッダーは次のようになります。
public function list($page = 1, $category = null)
問題は、引数を1つだけ入力すると、ルートで設定した名前でパラメーターの値が送信されず、関数パラメーターの順序で値がプッシュされることです。したがって、/ Page1を開くと、正しく機能し、値1が$ page変数に送信されますが、/ Golf(その場で作成)にアクセスすると、値も$ page変数に送信されます。これを回避する方法について考えられるアイデアはありますか、それともこれらのケースを処理するために別の関数を作成する必要がありますか?
C#では、値を適切に送信し、未定義のパラメーターのデフォルト値を保持します。
あなたが私に答えを持っていることを願っています。よろしくお願いします。良い一日を。
したがって、これまで見てきたように、パラメーターは名前ではなく順番に関数に渡されます。
目的を達成するために、次のようにリクエストオブジェクトをヒントとして入力することにより、関数内からこれらのルートパラメータにアクセスできます。
class ProductController extends Controller
{
function list(Request $request){ # <----------- don't pass the params, just the request object
$page = $request->route('page'); # <--- Then access by name
$category = $request->route('category');
dd("Page: $page | Category: $category");
}
}
次に、もちろん、3つのルートすべてを同じコントローラーメソッドにヒットするように設定します。
Route::get('/{category}/Page{page}', 'ProductController@list');
Route::get('/Page{page}', 'ProductController@list');
Route::get('/{category}', 'ProductController@list');
お役に立てれば..!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加