【问题标题】:Route Parameters not working in laravel路由参数在 laravel 中不起作用
【发布时间】:2017-02-17 09:58:34
【问题描述】:

我在 laravel 中的路由参数有问题, 这是 main.blade.php :

    <body>
<div class="flex-center position-ref full-height">
    <div class="content">
        <div class="title m-b-md">
            Generate Your Domain Now
        </div>
        {!! Form::open(['route'=>'generatorindex' , 'method' => 'post']) !!}
            <input type="hidden" name="_token" value="{!! csrf_token() !!}">
            <input name="inputkeyword" type="text" placeholder="Enter your keyword">
            <button type="submit" value="Generate"></button>
        {!! Form::close() !!}

    </div>
</div>
</body>

这是控制器中的功能:

public function generator(Request $inputkeyword)
    {
        echo $productname = $inputkeyword->input('inputkeyword');

    }

最后,这是路线:

Route::any('/generator/{inputkeyword}', [ 'as' => 'generatorindex', 'uses' => 'MainController@generator' ]);

但它会返回:

    ErrorException in UrlGenerationException.php line 17:
Missing required parameters for [Route: generatorindex] [URI: generator/{inputkeyword}]. (View: C:\Users\Mostafa\myapp\resources\views\main.blade.php)

我做错了什么?我应该在哪里定义 inputkeyword 参数?

【问题讨论】:

  • 在路由中查看您已经像这样定义 /generator/{inputkeyword} 但在表单提交中您只传递了 generatorindex 所以请发送 generatorindex/parameter{id}

标签: php laravel laravel-5 laravel-5.2 laravel-5.4


【解决方案1】:
<body>
    <div class="flex-center position-ref full-height">
        <div class="content">
            <div class="title m-b-md">
                Generate Your Domain Now
            </div>
            {!! Form::open(['route'=> ['generatorindex', '??'] , 'method' => 'post']) !!}
                <input type="hidden" name="_token" value="{!! csrf_token() !!}">
                <input name="inputkeyword" type="text" placeholder="Enter your keyword">
                <button type="submit" value="Generate"></button>
            {!! Form::close() !!}

        </div>
    </div>
</body>

要么在我写“??”的地方传递一些值在上面的代码中

通过后缀使 inputkeyword 参数可选 它与“?”像这样进入 route.php 文件:

Route::any('/generator/{inputkeyword?}', [ 'as' => 'generatorindex', 'uses' => 'MainController@generator' ]);

请阅读:

https://laravel.com/docs/5.3/helpers#method-route

https://laravel.com/docs/5.3/routing#parameters-optional-parameters


编辑

根据你在聊天中告诉我的要求:

routes.php

Route::post('generator', [ 'as' => 'generatorindex', 'uses' => 'MainController@generator' ]);

Route::get('generator/{inputkeyword}', [ 'as' => 'generatorindexurl', 'uses' => 'MainController@generatorindexurl' ]);

MainController.php

public function generator() {
   return redirect()->route('generatorindexurl', request('inputkeyword'));
}

public function generatorindexurl()
{
   dd(request());
}

查看

<body>
    <div class="flex-center position-ref full-height">
        <div class="content">
            <div class="title m-b-md">
                Generate Your Domain Now
            </div>
            {!! Form::open(['route'=> ['generatorindex'] , 'method' => 'post']) !!}
                <input type="hidden" name="_token" value="{!! csrf_token() !!}">
                <input name="inputkeyword" type="text" placeholder="Enter your keyword">
                <button type="submit" value="Generate"></button>
            {!! Form::close() !!}

        </div>
    </div>
</body>

【讨论】:

  • 我应该使用类似['generatorindex', $inputkeyword-&gt;inputkeyword]
  • 现在显示未定义变量:输入关键字
  • 首先确保 $inputkeyword->inputkeyword 有赋值
  • 我应该在哪里将值传递给它?在控制器文件或视图文件中?
  • 我希望它生成一个新的 url,其中包含用户在表单中提交的关键字。例如,localhost:8000/generator/keyword1,或 localhost:8000/generator/keyword2
猜你喜欢
  • 2016-10-06
  • 2015-08-13
  • 1970-01-01
  • 2018-10-04
  • 1970-01-01
  • 2016-11-05
  • 2015-01-26
  • 2015-03-13
相关资源
最近更新 更多