如何在laravel php中将变量从视图传递到控制器而没有表单
Posted
技术标签:
【中文标题】如何在laravel php中将变量从视图传递到控制器而没有表单【英文标题】:How to pass variables from view to controller without form in laravel php 【发布时间】:2017-02-27 12:01:36 【问题描述】:我在视图文件夹中有这些值。 .blade 文件是
@foreach($nam as $ergebnisse)
<h3>Id:$ergebnisse->id
Name_Id:$ergebnisse->name_id
Geometrie_Id:$ergebnisse->geometrie_id
</h3>
<h3>
<li>$ergebnisse->probe</li>
<li>$ergebnisse->schnittgrosse</li>
<li>$ergebnisse->temperatur</li>
<li>$ergebnisse->zeit</li>
<li>$ergebnisse->aussehen</li>
<li>$ergebnisse->farbe</li>
<li>$ergebnisse->deformation</li>
<li>$ergebnisse->geruch</li>
<li>$ergebnisse->texture</li>
</h3>
@endforeach
现在我想根据这些参数进行另一个查询。那么如何将这些参数传递给控制器,或者有没有其他方法可以在视图中生成查询并显示它们?
【问题讨论】:
Harron,如果我没记错的话,您想使用上述值触发另一个查询吗? 是的。我想触发另一个查询 Harron 那么你应该在模型本身中执行查询,然后使用compact('data' ,'2ndqueryresult')
从控制器传递它的视图
你能帮我如何访问控制器中 $nam 的所有行吗?谢谢
感谢 SoftwareDev 的评论。公共函数 getErgebnisse() $GEM=1; $name =1;$nam=Ergebnisse::where('name_id', $name) ->where('geometrie_id', $GEM) ->get();返回视图('pages.ergebnisse')->with('nam',$nam);
【参考方案1】:
你的问题不是很清楚,所以我有两种可能的解决方案:
-
如果您想加载另一个视图,您可以执行以下操作:
您可以发送带有链接的参数,无需是表单。
所以你可以做类似<a href="your-url/$nam->id">Do stuff</a>
这会将您的 $nam 对象的 id 发送到您喜欢的路线。
您的路线将如下所示:
Route::get('your-url/$nam', YourController@test);
在你的控制器中你必须捕捉到这个值
public function test(Nam $nam)
return $nam;
-
如果您想加载相同的视图并有 2 个不同的查询,只需
在控制器中执行 2 个不同的查询并发送它们
单独的低谷。
所以在你当前的控制器中:
public function index()
$nam = Nam::all();
// this is your second query:
$nam2 = Nam::latest()->get();
return view('your-view', compact('name','nam2' //this is the second variable))
【讨论】:
感谢您的回答。我是 web 开发的新手,尤其是 laravel。问题是行可以根据用户的选择变化到 8,因此总参数可以达到 72 或更多. 使用链接传递 72 个参数是个好主意吗?我在想可能有某种方法或技巧来传递整个数组并将其放入控制器中。我知道它与 mvc 无关。 您可以在链接中传递任何类型的参数。所以如果你想传递一个数组,只需传递它。我写的 $nam->id 只是一个例子。 laravel.com/docs/5.4/routing#route-parameters以上是关于如何在laravel php中将变量从视图传递到控制器而没有表单的主要内容,如果未能解决你的问题,请参考以下文章
在PHP Laravel中将变量从foreach循环传递给我的控制器
在 laravel 5.4 中将变量从 Route 传递到 Controller 的最简单方法是啥?