Почему функция route () теперь работает с использованием laravel? - PullRequest
0 голосов
/ 11 февраля 2019

В моем пакете laravel маршрут не работает, он показывает следующий неверный маршрут в отладчике

Request URL: http://localhost:8000/%7B%7B%20route('contact')%20%7D%7D

Однако мой маршрут выглядит следующим образом

Route::group(['namespace' => 'ayazdev\Contact\Http\Controllers'], function(){
    Route::get('contact', 'ContactController@index')->name('contact');
    Route::post('contact', 'ContactController@send')->name('sendForm');
});

И вот где я нахожусьпозвонив по маршруту

$(function(){
    $("#contact-form").submit(function(e) {
        var form = $(this);
        $.ajax({
               type: "POST",
               url: "{{ route('contact') }}",
               data: form.serialize(), 
               success: function(data)
               {
                   alert(data); 
               }
             });
        e.preventDefault(); 
    });
});

, если вышеприведенных подробностей недостаточно для понимания, вы можете проверить его на github .

Может кто-нибудь любезно подсказать мне, почему он сейчас работает, я буду признателен.Спасибо

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Как отметил Джеродев, фигурные скобки взяты из Laravel Blade, и вы, вероятно, используете их в файле Javascript.Либо вы можете переместить его в блейд-файл следующим образом:

<script>
  $(function(){
    $("#contact-form").submit(function(e) {
        var form = $(this);
        $.ajax({
               type: "POST",
               url: "{{ route('contact') }}",
               data: form.serialize(), 
               success: function(data)
               {
                   alert(data); 
               }
             });
        e.preventDefault(); 
    });
});
</script>

Или, если вы предпочитаете хранить его в отдельном файле, вы можете иметь тег с информацией только об этом маршруте и получать его через jQuery какВы делаете:

// at the blade file add
<div id="routeToContact" data-route="{{ route('contact') }}">

// At the javascript file you can do the following
var route = $("#routeToContact").data('route');

$("#contact-form").submit(function(e) {
        var form = $(this);
        $.ajax({
               type: "POST",
               url: route,
               data: form.serialize(), 
               success: function(data)
               {
                   alert(data); 
               }
             });
        e.preventDefault(); 
    });

В качестве личного вкуса я бы выбрал второй способ, чтобы все было организовано, но, как всегда говорила моя мама: "выбери, для чего бьется твое сердце"

0 голосов
/ 11 февраля 2019

Вы используете синтаксис Blade в простом файле Javascript.

Попробуйте сделать следующее:

$(function(){
    $("#contact-form").submit(function(e) {
        var form = $(this);
        $.ajax({
               type: "POST",
               url: "<?= route('contact'); ?>",
               data: form.serialize(), 
               success: function(data)
               {
                   alert(data); 
               }
             });
        e.preventDefault(); 
    });
});

Таким образом, вы используете сам PHP, чтобы получить адрес нужного вамroute.

Подробнее об этом синтаксисе см. в: https://secure.php.net/manual/pt_BR/ini.core.php#ini.short-open-tag

0 голосов
/ 11 февраля 2019

Фигурные скобки являются частью представлений Laravel Blade, но вы используете это в файле JavaScript .Этот код не анализируется Laravel, поэтому вы не можете использовать здесь функции php.

Если вы хотите получить именованные маршруты в вашем коде JavaScript, вам придется преобразовать их в переменную JavaScript или использовать пакет типа Зигги , чтобы получить функциональность маршрута в JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...