2016-04-20 6 views
2

私は、必要な都市、例えば、「London.blade.php」、「Paris.blade.php」のような地図があるサイトで作業しています。 私はサイト上で検索バーを実装しようとしていますが、ビューの内容ではなく結果としてビュー(blade.phpページ)を返す必要があります。 たとえばwhere('views', 'LIKE', "%$search_query%")。ビューがデータベースに格納されていないため実際に可能ですかLaravelのビューを検索する

+0

は/リソース/ビューとサブフォルダ中に存在し、配列にそれらを押してください。 – larsAnders

+0

こんにちは、私はあまりにもPHPに精通していないので、私は少し失われています、 'foo.blade.php'?...あなたが私に教えてくれる例はありますか? @IarsAnders – ccg

+0

これを見て、laravelのすべてのビューを返す方法を見てください - http://laravel-tricks.com/tricks/show-all-available-views – codenathan

答えて

0

指定した拡張子のファイルを一覧表示する汎用関数です(この場合は.blade.php)。 $pathで検索を開始し、見つかったサブディレクトリを再帰的に検索します。

function findFileExtension_r($extension, $path, &$names = array()){ 
    $files = array_diff(scandir($path), array('..', '.')); 
    foreach($files as $f){ 

     $abs_path = $path.'/'.$f; 

     if(is_dir($abs_path)){ //directory, recurse 

      findFileExtension_r($extension, $abs_path, $names); 

     } else { //file, test if the name ends with $extension 
      $ext_length = strlen($extension); 
      if(substr($f, -$ext_length) === $extension){ 
       $names[] = $f; 
      } 
     } 
    } 
} 

使用法:

//set up some values 
$find = '.blade.php'; 
$path = 'path/to/laravel/resources/views'; 
//$blade_templates = array(); //can be initialized, or named in the function call below. 

//call function 
findFileExtension_r($find, $path, $blade_templates); 

//output 
echo '<h2>Results</h2><pre>' . print_r($blade_templates, true) . '</pre>'; 
0

ビューはDBに格納されていない場合、あなたはよルート内のビューを指し示す必要があり、動的ルートを使用することができます。

Route::get('/{slug}', array('as' => 'page.show', 'uses' => '[email protected]')); 

ショー機能:あなたはすべてのfoo.blade.phpファイル名を読み取るために再帰関数を書くことができ

public function show() 
{ 
    $slug = input::get('location'); 
    $page = page::whereSlug($slug)->get(); 
    return View::make('pages')->with('page', $page); 
} 
+0

こんにちは、私はそれが何か間違っているようです「[Route:page.show] [URI:countries/{canada}]の必須パラメータがありません(表示:/Users/ccg/testsite/resources/views/layouts/app.blade.php)」というエラーが発生します。 ...これは私がルート "Route :: get( 'countries/{canada}'、array( 'as' = '' page.show '、' uses '=>' PageController @ show '))です。 ; "検索ボックスには

...検索ボックスに国名(唯一)を入力したいだけです。 @Piya Desai – ccg

+0

待ってください。なぜそれは '{カナダ}'ですか?そのフォルダには何が入っていますか? –

+0

私は "countries"という名前のメインビューフォルダを持っています。その中には、カナダのような各国のサブフォルダがあり、カナダのフォルダ内にindex.blade.phpファイルと他の都市があります。 "Route :: get( '/ {slug}'")を使用すると、同じエラーがスローされます。[Route:page.show] [URI:{slug}]の必須パラメータがありません。それはRoute :: get( '/ slug'、array( 'as' => 'page.show'、 'uses' => 'PageController @ show')));しかし、 "Class 'App \ Http \コントローラー\ページ 'が見つかりません " – ccg

関連する問題