所以我在表单标签中有四个用户输入:
<form id="alexa-query" method="POST" enctype="application/x-www-form-urlencoded">
<input type="text" name="ds.alexa.mainUrl" style="width:350px; border-radius:3px;">
<input type="text" name="ds.alexa.competitorUrl1" style="width:350px; border-radius:3px;">
<input type="text" name="ds.alexa.competitorUrl2" style="width:350px; border-radius:3px;">
<input type="text" name="ds.alexa.competitorUrl3" style="width:350px; border-radius:3px;">
</form>
我将输入存储到四个php变量中:
<?php
if(isset($_POST['submit'])){
$mainUrl = $_POST["ds.alexa.mainUrl"];
$competitorUrl1 = $_POST["ds.alexa.competitorUrl1"];
$competitorUrl2 = $_POST["ds.alexa.competitorUrl2"];
$competitorUrl3 = $_POST["ds.alexa.competitorUrl3"];
?>
这发生在项目中此位置的刀片中:
\resources\views\users\admin\dynamic-dashboard\widget-steps\widget\general
在涉及项目的不同刀片中,我需要将这四个变量中的信息用于单个变量:
$site = $mainUrl.$competitorUrl1.$competitorUrl2.$competitorUrl3;
此刀片的位置为:
\app\Libraries\Services
我是laravel和后端编程的新手,所以如果我的问题看起来很愚蠢或者我做错了什么我很抱歉。我的想法是,我需要将来自这四个输入标签的用户输入存储在名为$site
的php变量中。因此,我不需要将输入存储到数据库中,我需要在两个视图之间共享它。
有人可以帮帮我吗?
答案 0 :(得分:0)
您可以使用Flash data:
有时您可能希望仅在下一个会话中存储会话中的项目 请求。您可以使用flash方法执行此操作。数据存储在 使用此方法的会话仅在后续会话期间可用 HTTP请求,然后将被删除。
如果您需要在会话中存储变量,可以使用
$request->session()->put('key', 'value');
然后您可以使用
检索该值$value = $request->session()->get('key', 'default');
答案 1 :(得分:0)
如果您想避免将其存储在数据库中,您是否考虑过会话?在将提交的数据保存到变量的页面上,也将其保存到会话变量中。像:
$_SESSION['competitorUrl1'] = $competitorUrl1 = $_POST["ds.alexa.competitorUrl1"];
然后您可以使用以下方式访问其他页面上的此数据:
$_SESSION['competitorUrl1']
当然,只有在大多数情况下浏览器窗口关闭之前,它才可用。
答案 2 :(得分:0)
这是我很久以前给我的两条通用编程建议,我认为这些建议与此相关。 (我在下面给出了更多直接答案)
理想情况下,视图中应该包含非常少的逻辑 - 如果有的话。所有这些逻辑应该直接与视图相关 - 而不是与数据相关。避免在视图中创建新变量或编辑现有变量。
将任何与处理数据和渲染数据(即你的顾虑)分开的东西都会使代码更易于推理和思考。
另外,避免直接使用全局变量和超全局变量 - 例如PHP $_POST
或$_SESSION
。
Laravel实际上拥有所有这些包装纸,它们几乎总是更友好,更安全。通常建议使用它们。
例如,您可以从请求对象获取用户输入:
// You can use the facade anywhere in laravel
\Request::input('ds.alexa.competitorUrl1')
// or if you have the request object (like, in a controller)
$request->input('ds.alexa.competitorUrl1')
同样,不依赖于特定的全局状态会使代码更容易推理和调试!
如果您正在按照我的想法行事,那么您就会尝试传递数据&#34;横向&#34;在观点之间,并且已经认识到它很尴尬:)
如果是这样,您的问题可能会有结构或架构解决方案。
我认为你要做的最好是在上面视图级别(在Controller
中完成,或者,如果有很多逻辑需要完成,则在另一个类中完成控制器使用),并传递给主视图,主视图可以将其传递给任何子视图。
例如,请求对象在控制器级别可用(您可以注入它 - see the example for method injection in the docs)。
从那里,您可以从中获取用户输入,随意操作它,并将其传递给视图。