在Laravel中搜索视图

时间:2016-04-20 00:10:45

标签: php sql laravel views blade

我正在一个网站上工作,我为每个需要的城市提供地图,例如'London.blade.php','Paris.blade.php'。 我试图在网站上实现一个搜索栏,我需要它返回视图(blade.php页面)作为结果,而不是视图的内容。 例如where('views', 'LIKE', "%$search_query%")。这实际上是可行的,因为视图没有存储在数据库中,如果有的话,是否有人知道如何解决这个问题?

3 个答案:

答案 0 :(得分: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>';

答案 1 :(得分:0)

您实际上可以将刀片模板存储在数据库中,并通过SQL查询它们:https://github.com/delatbabel/viewpages

答案 2 :(得分:0)

如果视图未存储在数据库中,则必须指向路径中的视图,并且可以使用动态路径。

Route::get('/{slug}', array('as' => 'page.show', 'uses' => 'PageController@show'));

show function:

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