【问题标题】:How to get a url value into a form field when the link is clicked in laravel在laravel中单击链接时如何将url值获取到表单字段中
【发布时间】:2017-05-23 02:00:05
【问题描述】:

我想在 laravel 5.4Registration form 中创建一个这样的引用链接 电子邮件 example.com 对于每个注册用户,当点击链接时,它应该重定向到注册表单,其中 ref 值会自动进入图像中给出的 REF 表单字段。以下是相关图片RegistrationController

【问题讨论】:

  • 你想创建参考链接或者你想添加到表单!到目前为止你尝试了什么,显示一些代码。

标签: php laravel session cookies


【解决方案1】:

编辑:更新了基于 cmets 的链接生成

使用登录用户的电子邮件生成推荐链接。假设您的登录用户为$user,如果没有将其替换为auth()->user()->email。请注意,这需要登录用户的电子邮件。所以不用说你需要先登录才能生成引用链接。

如果您将当前登录的用户从控制器传递到您的视图,则执行此操作,其中$user = auth()->user();

<a href="{{ route('register', ['ref' => $user->email]) }}" target="_blank">Referral register link</a>

如果您想直接访问已登录用户的电子邮件

<a href="{{ route('register', ['ref' => auth()->user()->email]) }}" target="_blank">Referral register link</a>

这就是它在视图中的样子。

<a href="http://example.com/register?ref=example@example.com" target="_blank">Referral register link</a>

根据您创建表单的方式,在您的注册表单中添加以下代码。

<input type="text" name="referrer" value="{{ request('ref') }}">

Or

{!! Form::text('referrer', request('ref')) !!}

【讨论】:

  • 这可以完全解决问题,但错误是如果我 推荐注册链接 它会生成未定义的用户,如果使用 href="{{ route('register', ['ref' => auth()->user()->电子邮件]) }}">注册
  • 这可以完全解决问题,但错误是如果我 推荐注册链接 它会生成未定义的用户,如果使用 注册它给出“试图获取非对象错误的属性”
  • 此外,如何从 example.com/register?ref=refemail@gmail.com 这样的 url 链接" target="_blank">推荐注册链接点击时
  • @Odayo 我已经更新了答案。您至少应该了解一些基本知识来解决此类问题。我在回答中明确提到 $user 是传递给视图的登录用户对象。我已经直接添加了另一种方式。您需要让用户成为用户登录才能为他们生成参考链接。如果用户未登录,则 auth()-&gt;user() 将返回 null 并且您无法获取电子邮件。
  • 是的@sonesis 我已经完成了这个example.com/register?ref=example@example.com" target="_blank">推荐注册链接,甚至在发布问题之前,但我无法做出一个将这样的链接example.com/register?ref=$user->email" target="_blank">推荐注册链接包装到链接导航中的对流方式。我对 RegistrationController 做了一些事情,但没有结果。而且您还知道用户尚未登录或注册,所以我认为这就是为什么 example.com/register?ref={{ Auth::User()->email}}" > 不起作用
【解决方案2】:

这样的想法:在电子邮件中创建这样的链接:

<a href="{{ route('register', ['ref' => auth()->user()->email]) }}">Register</a>

在您的表单中,您可以像这样添加隐藏或禁用的文本框:

<input type="textbox" name="ref" value="{{ request()->get('ref') }}"/>

【讨论】:

    【解决方案3】:

    您也可以像这样将它添加到控制器中的会话对象中:

    function create(Request $request) {
        return view('register')->with(['ref' => $request->query('ref')]);
    }
    

    如果您使用Former 或使用表单模型绑定,请使用{!! Former::populate(['ref' =&gt; $ref]) !!} 填充您的表单(请参阅here

    register.blade.php 中的示例表单标记与Former:

    {!!Former::horizontal_open()
            ->method('POST') !!}
        {!! Former::populate(['ref' => $ref]) !!}
        {!! Former::text('ref') !!}
        ...
        {!! Former::actions()
            ->large_primary_submit('Create') # Combine Bootstrap directives like "lg and btn-primary"
            ->large_inverse_reset('Reset') !!}
    {!!Former::close() !!}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 2023-04-07
      • 2017-08-02
      • 2018-06-10
      • 2020-05-21
      • 2016-01-30
      • 1970-01-01
      相关资源
      最近更新 更多