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

20

LARAVEL 5.1

我想编辑拥有ID和TktID的表格。

我想将这两个参数传递给TestController的edit方法。

我的链接:

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

我的 route.php

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

控制器的编辑方法:

 public function edit($id, $ticketid)
    {
        //
    }

我如何在route.php中将两个参数传递给控制器。

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">

希望这能帮到你。干杯。


好的,从浏览器中调用ip/sig/edit/ree会起作用吗? - user123456

10

路由

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

链接

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


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'];

没有表单可提交。这两个隐藏字段能否在点击URL时被提交? - Rajendra
@martin 现在试试这个,它可以在不需要提交表单的情况下工作。 - PRANAV
我们如何传递多个可选参数并使用它们? - Kamlesh

2
当您像这样传递参数:?name=value,您无需为其设置路由,只需通过依赖注入直接在控制器中访问即可。您需要在类的上方添加此内容。
use Illuminate\Http\Request;

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

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



1
在我的情况下,我会像这样传递两个参数:
路由
Route::get('/add/{debitid}/{creditid}',
    ['as'=>'loan_add',
    'uses'=>'LoanController@loanset']);

在LoanController中。
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
在`routes/web.php`文件中 - 这个对我有效。
Route::any('/documents/folder/{args?}', function($args){
   $args = explode('/', $args);
   return $args;
})->where('args', '(.*)');

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

希望它能正常工作!


我们如何传递多个可选参数并使用它们? - Kamlesh

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;

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中,即使在路由签名中没有定义参数,它仍然会传递到路由中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接