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