Laravel路线不适用于特定情况

时间:2018-07-26 12:32:36

标签: php laravel-5.2

这里有专家吗?这是我面临的一个非常奇怪的问题。

我的网站托管在aws机器上。该代码在这里工作得很好。然后将其转移到另一台服务器上,此奇怪的问题消失了。

我有更新汽车的路线

Route::put('vehicles/{vehicle}', 'VehicleController@update');

编辑表单

{!! Form::model($vehicle, ['url' => ['backend/vehicles', $vehicle->id], 'method' => 'put','files' => true , 'class' => 'form-horizontal form-label-left', 'role' => 'form']) !!}

   @include( 'backend.vehicles.form' )

{!! Form::close() !!}

现在,每当我尝试更新在服务器移动之前创建的汽车时,奇怪的行为便从这里开始,它向我展示RouteCollection.php中的MethodNotAllowedHttpException

但是当我创建汽车并更新此新汽车时,Operation成功。请帮忙。

还有一件事情,在routeCollection.php中,它与请求的路线相匹配,显示了旧车的GET方法,而新车的put方法

public function match(Request $request){
   // die($request->getMethod()); $routes = $this->get($request->getMethod());
   $route = $this->check($routes, $request);

    if (! is_null($route)) {
        return $route->bind($request);
    }

    // If no route was found we will now check if a matching route is specified by
    // another HTTP verb. If it is we will need to throw a MethodNotAllowed and
    // inform the user agent of which HTTP verb it should use for this route.
    $others = $this->checkForAlternateVerbs($request);

    if (count($others) > 0) {
        return $this->getRouteForMethods($request, $others);
    }

    throw new NotFoundHttpException;
}

请任何人。

3 个答案:

答案 0 :(得分:0)

将此添加到表单中

from ftplib import FTP
import time
import os

session = FTP('Host', 'user', 'passwd')
path = "D:/directory_image"
FichList = os.listdir( path )


for image_name in FichList:                         #Iterate Each File
    jpg_to_send = os.path.join(path, image_name)    #Form full path to image file
    file_open = open(jpg_to_send, 'rb')
    session.storbinary('STOR '+ image_name, file_open)
    file_open.close()

或HTML

{{ method_field('PUT') }}

答案 1 :(得分:0)

请尝试以下解决方案:

Route::put('vehicles/{vehicle}', 'VehicleController@update');

更改为

Route::match(['put', 'patch'], 'vehicles/{vehicle}', 'VehicleController@update');

和表格

{!! Form::model($vehicle, ['action' => ['VehicleController@update', $vehicle->id], 'method' => 'put','files' => true , 'class' => 'form-horizontal form-label-left', 'role' => 'form']) !!}

   @include( 'backend.vehicles.form' )

{!! Form::close() !!}

它对您有用吗?

答案 2 :(得分:0)

希望这对某人有帮助。

所以这不是与laravel相关的问题。问题出在一个名为description的字段中,其中包含一些字符,这些字符正在处理与请求一起发送的数据(从put到get的更改方法)。

使用新车的唯一原因是,当我们创建新车时,我们将描述字段留空,然后测试更新,因为旧车的描述时间很长。我们很快意识到,如果我们试图用这样的描述来创建一辆新车,那也是行不通的。

因此,我们使用一些JavaScript,单击“更新/创建”按钮时暂停了更新/添加请求,对描述进行了编码,然后继续进行表单提交。在服务器端,对其进行解码并保存。

编辑: 这仍然没有完全解决。