2017-08-08 5 views
1

URLに基​​づいて検索ボックスを表示しようとしましたが、特定のルートには検索ボックスが表示されます。それのために私はRequest::path()を使用しました。しかし、問題はそれが動作しないいくつかのルートです。私はproductsルートのLaravel:Request :: path()を使用して動的URLを確認する方法

@if(Request::path() == 'products' || Request::path() == 'product/{name}') 
    // something print 
@endif 

を使用した場合、今

Route::get('products','[email protected]'); 
Route::get('product/{name}','[email protected]roduct'); 

として、私は、検索ボックスを見ることができ.such牽引ルートを持っていますが、product/{name}のために、私は..私はどのように解決するのですができませんでしたと仮定し 問題?

+0

を助けることができる使用

@if(Route::is('product.*') // something print @endif 

あなたは 'リクエスト::パス()'値を確認しましたか? –

+0

あなたは[ここ](https://stackoverflow.com/q/26840278/2679536)から適切な解決策を得ることができます! –

答えて

1
Route::get('products',['as' => 'product.index', 'uses' => '[email protected]']); 
Route::get('product/{name}',['as' => 'product.name', 'uses' => '[email protected]']); 

希望はあなたに

2

ビューに値を渡すことで、コントローラ自体を介してこれを処理する方がずっと良い考えがあります。あなたのレイアウトがどんなルートについても知る必要がないので、カプセル化が改善されます。

デフォルトで検索バーを表示する場合、値が存在する場合はではなく、と表示されます。一部のページにのみ表示されている場合は、値が実際に存在する場合にのみ表示します。

+0

私はそれを 'Ruquest :: url() 'を通して直接見ていました。 – User57

+0

私の意見では、URLはどのページの識別子としても使用すべきではありません。あなたのビューで '@isset($ showSearchBox)'を使ってそれが存在するかどうかをチェックし、検索ボックスでビューを表示するはずのコントローラアクションの 'true'値(または何か)を' showSearchBox'に渡してみてください。または、前に言ったように、通常は$ hideSearchBox'を表示します。 –

関連する問題