전문가에게 물어볼 시간이라고 생각했기 때문에 꽤 많은 곳을 보았습니다.와일드 카드를 사용할 때의 라우트 경로 문제
나는 laravel을 가지고 놀고 있는데 라우팅과 관련된 몇 가지 문제가 있습니다.
나는 페이지의 접두어를 사용하지 않는 종류의 제품 카탈로그와 제품 카탈로그를 갖고있다.
제품이 'example.com/my-product'이 될 수 있으며 페이지가 나는 URL이 페이지 또는 일치하는지 확인하려면 내 경로에서
'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')를 추가 한 다음 getFind에 대한 찾기 기능을 수정하는 것입니다.하지만 이는 예제처럼 보이는 URL로 끝납니다. example.com/about-us의 줄에있는 원래 URL이 아닌 com/pages/find /를 사용하십시오.
고마워요.하지만 "알 수없는 동작"오류가 발생했습니다. 아직 페이지 컨트롤러에 "찾기"작업이 있습니다. –
PagesController 코드도 게시 할 수 있습니까? –
@SamParmenter가 PagesController로 pagesController를 변경합니다. 대소 문자를 구별한다고 생각합니다. –