我看了很多地方無濟於事,所以我認爲是時候請專家了。Laravel路線使用通配符時的問題
我在玩laravel,我在路由方面遇到了一些問題。
我有各種各樣的cms和一個產品目錄,每個目錄都不使用頁面的前綴。
的產品可能是「example.com/my-product」和頁面可能是「example.com/my-page」
在我的路線我要檢查,如果網址相符的網頁或產品或不是,然後重定向到一個特定的控制器/操作取決於它是。
目前我有
Route::any('/{slug}', function($slug) {
$page = App\Models\Page::firstByAttributes(['slug' => $slug]);
if($page) {
// go to [email protected]
}
})->where('slug', '.*');
要和頁面之間的區分產品是好的,我就彈出如果($頁)後ELSEIF的產品檢查,但我難倒就如何一旦我確定url指向db上的一個頁面,就進入PagesController。
任何幫助將大規模讚賞。
編輯:
我的頁面控制器:
class PagesController extends BaseController {
public function find()
{
echo 'asdaasda'; die;
}
}
我能得到這個時尚後的工作,但它不是我想要的。我需要url保持原樣,並且需要PagesController來處理頁面的處理和呈現。唯一能讓它工作的方法是在路由文件中添加一個Route :: controller('pages','PagesController'),然後將find函數修改爲getFind,但最後只是一個看起來像example的url。 com/pages/find /而不是可能是example.com/about-us行的原始URL。
感謝這一點,但它給了我一個「未知動作」錯誤,但在頁面控制器中有一個「查找」動作。 –
您可以發佈您的PagesController的代碼嗎? –
@SamParmenter使用PagesController更改pagesController。我認爲這是區分大小寫的。 –