다음 튜토리얼 칼럼은 Laravel에서 여러분이 모르는 Laravel ORM의 멋진 작업을 소개할 것입니다. 필요한 친구들에게 도움이 되길 바랍니다!
Laravel의 라우팅 모듈에서는 다음과 같이 각 경로에 대한 이름을 설정할 수 있습니다:
Route::get('/blog/{blog}', 'BlogController@show')->name('blog.show');
그런 다음 Route('blog.show', ['blog' => 1])를 전달하여 이 경로의 액세스 주소를 사용하면 백엔드 점프에
return redirect()->route('blog.show', ['blog' => 1]);
를 사용할 수 있습니다. 이것의 장점은 예를 들어 URL이 변경되면 /blog/{blog}를 /boke/{blog}로 변경하고 싶다는 것입니다. 라우팅 파일의 다른 부분을 조정할 필요가 없습니다. 따라서 각 경로에 이름을 부여하고 경로 이름을 통해 획득하는 것이 좋습니다.
그러나 이는 백엔드 및 블레이드 템플릿에만 사용할 수 있습니다. 규모가 약간 더 큰 웹 사이트에서는 js 파일을 분리하고 블레이드 템플릿에 js를 직접 작성하지 않습니다. 이로 인해 ajax 요청 또는 페이지가 전송됩니다. 점프할 때
location.href = '/blog/' + id;
같은 요청 주소만 적어주면 되는데, 이렇게 라우트가 바뀌면 js 파일을 수정하면 되니, 여러 js에서 호출하면 편합니다. 하나 또는 두 개의 변경 사항을 놓치는 것입니다.
그래서 js에서도 백엔드 같은 라우트 기능을 구현할 수 있을까 고민했어요.
최종 해결책은 매우 간단합니다. 단 두 가지 기능만으로 해결할 수 있습니다.
백엔드 부분은 다음 기능을 구현해야 합니다.
function route_uri($name) { return app('router')->getRoutes()->getByName($name)->getUri(); }
이 함수의 기능은 경로 이름을 기반으로 원래 라우팅 주소를 반환하는 것입니다.
echo route_uri('blog.show'); // 会输出/blog/{blog}참고 1: ES6 구문(그렇지 않은 경우) babel을 사용하여 직접 ES5로 변환참고 2: Lodash는 여기에 인용되어 있습니다이 함수의 기능은 다음과 같습니다.
let route = (routeUrl, param) => { let append = []; for (let x in param) { let search = '{' + x + '}'; if (routeUrl.indexOf(search) >= 0) { routeUrl = routeUrl.replace('{' + x + '}', param[x]); } else { append.push(x + '=' + param[x]); } } let url = '/' + _.trimStart(routeUrl, '/'); if (append.length == 0) { return url; } if (url.indexOf('?') >= 0) { url += '&'; } else { url += '?'; } url += append.join('&'); return url; }그러면 매우 간단합니다. 이 페이지에서는 블레이드 템플릿의 객체로 사용해야 합니다.
route('/blog/{blog}', {blog: 1}); //返回 /blog/1 route('/blog/{blog}', {blog: 1, preview: 1}); //返回 /blog/1?preview=1js 파일에 넣으세요:
var routes = { blog: { show: '{{ route_uri('blog.show') }}', update: '{{ route_uri('blog.update') }}', destroy: '{{ route_uri('blog.destroy') }}' } };사용법은 백엔드 경로와 거의 동일합니다더 많은 Laravel 프레임워크 기술 문서를 보려면, laravel
위 내용은 JS에서 Laravel의 경로 기능을 구현하는 방법을 가르쳐주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!