Post 方法在 Laravel 中不起作用

Posted

技术标签:

【中文标题】Post 方法在 Laravel 中不起作用【英文标题】:Post Method Not Working in Laravel 【发布时间】:2015-06-06 13:04:15 【问题描述】:

表格:

@section('form')
    <div class="col-sm-4">
        !! Form::open() !!
        <div class="form-group">
            !! Form::label('name', 'Name:') !!
            !! Form::text('name', 'Enter your name', ['class' => 'form-control']) !!
        </div>

        <div class="form-group">
            !! Form::label('contact', 'Contact Number:') !!
            !! Form::text('contact', 'Enter your contact number', ['class' => 'form-control']) !!
        </div>

        <div class="form-group">
            !! Form::label('location', 'Location:') !!
            !! Form::select('location', $locations, null, ['class' => 'form-control']) !!
        </div>

        <div class="form-group">
            !! Form::label('service', 'Service Required:') !!
            !! Form::select('service', $services, null, ['class' => 'form-control']) !!
        </div>

        <div class="form-group">
            !! Form::submit('Just go Befikr >>', ['class' => 'btn btn-primary form-control']) !!
        </div>
        !! Form::close() !!
    </div>
@stop

routes.php

<?php

Route::get('/', 'PagesController@index');
Route::post('/', 'PagesController@store');

PagesController.php

<?php namespace App\Http\Controllers;

use App\service_location;
use App\service_type;
use App\service_request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

use Request;

class PagesController extends Controller 

    public function index()
            
        $locations = service_location::lists('location_area', 'location_id');
        $services = service_type::lists('service_desc', 'service_id');

        return view('home.index', compact('locations','services'));
    

    public function store()
    
        $input = Request::all();            
        return $input;
    


不幸的是,代码似乎既没有在屏幕上返回$input(暗示它根本没有执行store() 函数),也没有抛出任何错误/异常。

谁能告诉我为什么post 方法在这里没有产生适当的结果?


编辑 1

我试图通过route 的内联函数直接return,但即使这样也没有用。因此,现在我非常有信心 post 方法根本不会被触发。这是我为验证它所做的:

Route::post('/', function()

    return 'Hello';
);

【问题讨论】:

您可能会点击laravel.com/docs/master/routing#csrf-protection。我怀疑“没有例外”位 - 检查你的日志。 @ceejayoz 我应该如何检查我的日志?我是新手。如果这听起来很愚蠢,请原谅我。 storage/logs 包含带有日志信息的文本文件。 @ceejayoz 日志中也没有任何内容。 【参考方案1】:

好吧,我在这里找到了我自己问题的答案。

事实证明,为了能够执行post 请求,您需要将 PHP 服务器显式部署为:

php -s localhost:<AnyFreePort> -t <YourRootDirectory>

而当我第一次尝试通过 XAMPP 运行它时,我试图运行应用程序是出于纯粹的懒惰,直接如下:

http://localhost/myproject/public

对于get 请求来说效果很好。

【讨论】:

【参考方案2】:

即使我遇到了同样的问题,但您的解决方案对我没有帮助,因为我使用的是 Apache 服务器而不是内置的 PHP 服务器 然后我找到了this 解决方案,它说只需进入空间以形成动作、奇怪的问题和解决方案,但它对我有用......

例如。

!! Form::open(array('url' => ' ', 'method' => 'post')) !!

【讨论】:

以上是关于Post 方法在 Laravel 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ajax 类型的帖子在 laravel 5.4 中不起作用

使用 PUT 请求发送 multipart/form-data 在 Laravel 中不起作用

Laravel 路由在 API 中不起作用,返回 404 页

PUT 方法在表单中不起作用会引发错误

Laravel 6 @yield() 在 include() 方法中不起作用

会话在中间件 Laravel 5 中不起作用