在POST请求中传递shortn URL链接时,laravel show method未找到异常

时间:2017-01-13 16:47:54

标签: php laravel laravel-5 laravel-5.2

我在本地有一个laravel工作目录。所有表单都在本地发布数据,但只有addshow表单不能正常运行。当我用链接字段填充谷歌缩短网址时,我发现了这一点。 Laravel在提交表单时提供了一种不允许例外的方法。在缩短链接旁边放置任何其他链接在现场工作正常。

<form class="" role="form" method="post" action="{{ url('/addshow') }}">
      {{ csrf_field() }}
      <div class="box-body">
        <div class="row">
          <div class="col-sm-8">
            <label for="name" class="col-sm-3 control-label">Title<span>*</span></label>
            <div class="col-sm-9">
              <input class="form-control" type="text" name="title" id="name" value="" placeholder="Enter Title"/>
            </div>
          </div>
        </div>
        <br/>

        <div class="row">
          <div class="col-sm-8">
            <label for="name" class="col-sm-3 control-label">Place<span>*</span></label>
            <div class="col-sm-9">
              <input class="form-control" type="text" name="place" id="place" value="" placeholder="Enter place"/>
            </div>
          </div>
        </div>
        <br/>

        <div class="row">
          <div class="col-sm-8">
            <label for="name" class="col-sm-3 control-label">Time<span>Start / End</span></label>
            <div class="col-sm-4">
              <input class="form-control" type="text" name="start_time" id="start_time" value="<?= date('h:m'); ?>" placeholder="Enter Start time"/>
            </div>
            <!-- <div class="col-sm-4 hidden-lg">
              <input class="form-control" type="time" name="end_time" id="end_time" value="<?php// date('h:m'); ?>" placeholder="Enter End time"/>
            </div> -->
          </div>
        </div>
        <br/>

        <div class="row">
          <div class="col-sm-8">
            <label for="name" class="col-sm-3 control-label">Date<span>*</span></label>
            <div class="col-sm-9">
              <input class="form-control" type="date" name="date" id="date" value="<?= date('y-m-20y') ?>" placeholder="Enter date"/>
            </div>
          </div>
        </div>
        <br/>
        <div class="row">
          <div class="col-sm-8">
            <label for="name" class="col-sm-3 control-label">Link<span>*</span></label>
            <div class="col-sm-9">
              <input class="form-control" type="url" name="link" id="link" value="" placeholder="Enter Url"/>
            </div>
          </div>
        </div>
        <br/>

        <div class="row">
          <div class="col-sm-8">
            <label for="status" class="col-sm-3 control-label">Status<span>*</span></label>
            <div class="col-sm-9">
              <select class="form-control" name="status">
                <option value="1">Activated</option>
                <option value="0">Deactivated</option>
              </select>
            </div>
          </div>
        </div>


      </div>
      <br/>
      <!-- /.box-body -->
      <div class="box-footer clearfix">
        <div class="row">
          <div class="col-sm-6">
       <span class="pull-right">&nbsp;
            <input class="btn btn-info" type="submit" name="Submit" id="Submit" value="Create" placeholder=""/>
          </span>
          </div>
        </div>
      </div>
    </form>

加上这是路线Route::post('/addshow', 'DashboardController@addshow');

public function addshow(Request $request) {
    echo"<pre>";print_r($request->all());echo"</pre>";exit();
    Shows::create($request->all());
    return redirect(url('/allshows'));
}

暂时验证和其他不包括保持简单的东西

2 个答案:

答案 0 :(得分:1)

这也发生在我身上也是我遇到的唯一解决方案当我放入较短的网址时,它会给你找不到异常的方法,因此只需让用户只输入最后6位或字母的URL并保存到数据库。只有这样我解决了这个问题,并希望你会发现它有用。此外,您还应该看到从默认值到utf8_general_ci

的排序规则

答案 1 :(得分:0)

我可以从您的问题中收集的最重要的信息是,您获得MethodNotAllowedHttpException,告诉我们具体问题是请求是使用不同的HTTP方法进行的。你已经设定了路线来处理。

从您提供的代码示例中,您的表单和路径似乎都使用POST方法,因此提交表单似乎不是问题的原因。要确定您可以尝试在dd('test');方法的开头添加addshow之类的内容。如果仍然出现异常,则表示您的表单实际上并未使用POST方法,或者路由配置不正确。

另一种方法是MethodNotAllowedHttpException不适用于/addshow。您提到当您将Google缩短的网址添加到链接字段时,它会在您输入其他链接时显示吗?如果是这样,可能是Google缩短的网址验证失败并重定向到不使用GET方法的网址。没有您的验证码,这是不可能确定的,但是当您收到错误屏幕时,检查浏览器显示的URL是值得的。