route和dd不起作用

时间:2016-07-06 13:30:20

标签: laravel laravel-5 laravel-routing

我是Laravel的新手,我在这里尝试的只是获取输入表单值并使用dd函数显示它。

路线档案:

Route::get('/', [
  'as' => 'index', 
  "uses" => "IndexController@index"
]);

Route::get('/panier',[
  "uses" => "ProductController@addToCard"
]);

我的表格:

<form method="get" action"/panier">
        <table>
          <tr>
            <td>
              Nombre de serveurs physiques
            </td>
            <td>
              <select id="nb_serveurs" name="nb_serveurs"><option value="0">Choisir une option</option><option value="1" selected="selected" >1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select>
            </td>
          </tr>
          <tr>
            <td>
              Type de licence
            </td>
            <td>
              <select id="type" name="type"><option value="0">Choisir une option</option><option value="1" selected="selected" >Illimitée</option><option value="2">Standard</option></select>
            </td>
          </tr>
          <tr>
            <td>
              Durée
            </td>
            <td>
              <select id="duree" name="duree"><option value="0">Choisir une option</option><option value="1" selected="selected">1 an</option><option value="2">2 ans</option><option value="3">3 ans</option></select>
              <a class="reset_variations" href="#">Effacer</a>
            </td>
          </tr>
        </table>
        <div style="width:100%;height:50px;">
          <div class="price"><span id="total">495,00 € HT</span></div>
        </div>
        <div class="panier-button">
          <input type="submit" class="single_add_to_cart_button button alt joli-boutton" id="panier-go" value="Ajouter au panier"/>
        </div>
</form>

控制器:

class ProductController extends Controller
{
    public function addToCard (Request $request){
      $input = Input::all();
      dd($input);
    }
}

get是有效的,因为当我提交表单时,我的URL就是这样:

http://127.0.0.1/altaro_laravel/public/?nb_serveurs=1&type=1&duree=1

但不应该这样吗?

http://127.0.0.1/altaro_laravel/public/panier/?nb_serveurs=1&type=1&duree=1

以及为什么dd函数不起作用,它不会显示任何内容..

抱歉,我是一个真正的新手。

第二个问题,我如何使用post方法执行此操作,当我将路由替换为post并且方法表单属性时,它不起作用。

有什么想法吗?

更新

好的改变一点:

这是路线:

Route::get('/panier',[
  "uses" => "ProductController@addToCard",
  "as" => "panier"
]);

这是表格标签:

<form method="get" action="{{ route('panier') }}">

新控制器功能:

public function addToCard (Request $request){
      $input = $request->nb_serveurs;
      dd($input);
}

我现在不幸地遇到这个错误: “ 抱歉,找不到您要查找的页面。 RouteCollection.php第161行中的NotFoundHttpException: “

1 个答案:

答案 0 :(得分:1)

在您的控制器中,要从表单中检索输入,您应该使用$ request。见here

所以你的功能可能就像

class ProductController extends Controller
{
    public function addToCard (Request $request){
      $input = $request->nb_serveurs;
      dd($input);
    }
}

注意:您的表单中也存在错误

<form method="get" action"/panier">

需要

<form method="POST" action="/panier">

缺少“=”,您的方法应该是POST。我还注意到你正在将行动硬编码为“/ panier”。 Laravel有更好的方法来构建操作URL。看看named routes

更新:

<form method="POST" action="{{route('panier')}}">
 ....
</form>

Route::POST('panier',[
  "uses" => "ProductController@addToCard",
  "as" => panier
]);

public function addToCard (Request $request){
      $input = $request->nb_serveurs;
      dd($input);
}

这应该采用您的表单,将值POST到名为panier的路由。该路由将调用您的控制器函数“addToCard”,您可以在其中读取请求。然后你可以通过dd打印或更有用,存储在数据库或其他东西