>  기사  >  PHP 프레임워크  >  JS에서 Laravel의 경로 기능을 구현하는 방법을 가르쳐주세요.

JS에서 Laravel의 경로 기능을 구현하는 방법을 가르쳐주세요.

藏色散人
藏色散人앞으로
2020-05-24 14:17:506756검색

다음 튜토리얼 칼럼은 Laravel에서 여러분이 모르는 Laravel ORM의 멋진 작업을 소개할 것입니다. 필요한 친구들에게 도움이 되길 바랍니다!

JS에서 Laravel의 경로 기능을 구현하는 방법을 가르쳐주세요.

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=1

js 파일에 넣으세요:

var routes = {
    blog: {
        show: '{{ route_uri('blog.show') }}',
        update: '{{ route_uri('blog.update') }}',
        destroy: '{{ route_uri('blog.destroy') }}'
    }
};

사용법은 백엔드 경로와 거의 동일합니다

더 많은 Laravel 프레임워크 기술 문서를 보려면,

laravel

튜토리얼을 방문해 주세요!

위 내용은 JS에서 Laravel의 경로 기능을 구현하는 방법을 가르쳐주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제