为什么使用laravel现在可以使用route()函数?

时间:2019-02-11 12:33:19

标签: php laravel laravel-5

在我的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 :(得分:6)

花括号是Laravel Blade视图的一部分,但是您正在a JavaScript file中使用它。 Laravel不会解析此代码,因此您不能在此处使用php函数。

如果要在JavaScript代码中获取命名路由,则必须将其渲染为JavaScript变量,或使用Ziggy之类的包来获取JavaScript中的路由功能。

答案 1 :(得分:2)

如Jerodev所述,花括号来自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(); 
    });

根据个人喜好,我会选择第二种方法来使一切保持井井有条,但正如我妈妈一直说的:“选择您的心脏跳动的原因”

答案 2 :(得分:2)

您在一个简单的Javascript文件中使用Blade语法。

尝试执行以下操作:

$(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本身来获取所需路由的地址。

https://secure.php.net/manual/pt_BR/ini.core.php#ini.short-open-tag

中详细了解此罪过