如何在 Laravel 5.1 中使用 url(路由)传递多个参数

问题描述 投票:0回答:8
php laravel laravel-5.1
8个回答
32
投票

你忘记了结束括号

您的routes.php 文件中有错误:

Route::get('sig/edit{id}{ticketid}', 'TicketsController@edit');

应该是:

Route::get('sig/edit/{id}/{ticketid}', 'TicketsController@edit');

注意editid后面的正斜杠。

并且在视图中它应该是以下之一:

<a href="{{ url('sig/edit/ ' . $value->id . '/' . $value->ticketid .')}}" title="Edit signature">

或者

<a href="/sig/edit/{$value->id}/{$value->ticketid}" title="Edit signature">

我希望这对您有帮助。干杯。


10
投票

路线

Route::get('sig/edit{id}{ticketid}','TicketsController@edit')->name(sig.edit);

链接

<a href="{{route('sig.edit',[$value->id,$value->ticketid])}}" title="Edit signature">


4
投票
 <a class="getValues" href="/sig/edit" title="Edit signature"/>Edit</a>
    <input type="hidden" id="id" name="id" value"={{$value->id}}"/>
    <input type="hidden" id="ticketid" name="ticketid" value="{{$value->ticketid}}"/>

jQuery(document).ready(function(){
     var $id=jQuery('#id').val();
     var $ticketid=jQuery('#ticketid').val();

     jQuery('getValues').on('click',function(){
          $.ajax({
            url:'yourController/controller'sFunction',
                  data:{'id':$id,'ticketid':$ticketid},
         }).success(function(response){
                alert(rseponse);
            });
     })
});

将此行代码粘贴为控制器函数中的第一行...

$inputs = Input::all();

并获取输入值,例如

echo    $ticketid=$inputs['ticketid'];
 echo "<br/>";
 echo     $id=$inputs['id'];

1
投票

就我而言,我传递两个参数,如下所示:

路线

Route::get('/add/{debitid}/{creditid}',
    ['as'=>'loan_add',
    'uses'=>'LoanController@loanset']);

在贷款控制器中

public function loanset($debitid, $creditid)
{
    $debit_user= UserModel::findOrFail($debitid);
    $credit_user= UserModel::findOrFail($creditid);
    return view('load.add',compact('debit_user','credit_user'));
}

这个例子可能会有帮助。


1
投票

我发现这种方法可以使你的 URL 保持相同并访问多个参数

<a href="/sig/edit?id={{$value->id}}&ticketid={{$value->ticketid}}" title="Edit signature">

路线

Route::get('sig/edit', 'TicketsController@edit');

访问控制器中的参数值

控制器

public function edit(){
$id = Input::get('id');
$ticketId = Input::get('ticketid');
}

注意:导入控制器中的输入

use Illuminate\Support\Facades\Input;

1
投票

routes/web.php
文件中 - 这个对我有用。

Route::any('/documents/folder/{args?}', function($args){
   $args = explode('/', $args);
   return $args;
})->where('args', '(.*)');

它现在应该处理每个参数/参数。

希望它有效!


1
投票

当你像这样传递参数时?name=value,你不必为其设置路由,你可以通过依赖注入

直接在控制器中访问它

你必须将其添加到你的班级上方

use Illuminate\Http\Request;

然后在控制器中注入它并按名称获取参数值:

    public function edit(Request $request)
    {
        //
    $id= $request->id;
 $tkt= $request->tkt_id;
    }



0
投票

实现此目的的一种方法是将参数及其值组织在数组中。

您的路线定义如下:

Route::get('sig/edit{id}{ticketid}','TicketsController@edit')->name('ticket.edit');
//call your route like this

$params = [
    'id' => $value->id,
    'ticketid' => $value->ticketid,
];

route('ticket.edit', $params);

在 Laravel 10 中,即使没有路由签名中定义的参数,它仍然会传递给路由。

© www.soinside.com 2019 - 2024. All rights reserved.