如何在视图层中使用不同的变量名称

时间:2017-02-25 10:43:14

标签: php laravel laravel-5 laravel-5.2 laravel-5.3

我有一张表格。如果用户创建填写表单并提交,则表示回复'帐户已成功创建。激活码已发送到您的邮箱。但如果用户使用已经使用的帐号注册,则应重定向您说“帐号已存在”。登录。'这是控制器中的代码:

protected function storuser()
{
$account_number = $request['accountnumber'];
$user = DB::table('users')->where('account_number', $account_number)->first();
if ($user==NULL) {
return view('login', ['message'=>'Account created successfully. An activation code has been sent to your mail.'])
}else{
return view('login', ['message'=>'Account number already exists. Login.']);
}

}

这是html代码:

<!DOCTYPE html>
<html>
<head>
<title>this is a title</title>
</head>
<body>
<form action="login" method="GET">
@if($message)
<div class="alert alert-info">
<a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
<ul>
<li>{{$message}}</li>
</ul>
</div>
@endif
<input type="text" name="accountnumber">
<input type="submit" value="submit">
</form>
</body>

每当我点击向我显示页面的登录路线时,它会告诉我Undefined variable:message。这令人沮丧,让我退缩。然而,当我删除页面显示的@if和@endif代码时,然后当我填写表单时,我在提交之前添加代码并且它完美地工作但是当我使用刀片扩展语法在那里时,它告诉我未定义的变量信息。 Plsssss帮助

4 个答案:

答案 0 :(得分:2)

请在您的控制器中尝试:

$message = 'Account created successfully. An activation code has been sent to your mail.';
return view('login', compact('message'));

或在您的视图文件中:

@if(isset($message))
 // your code
@endif

答案 1 :(得分:1)

尝试从

更改
@if($message)

@if(isset($message))

您还可以检查$message是否为空或类似。

答案 2 :(得分:0)

您可以使用$message检查isset($message)是否存在。

但我也看到你错误地构建了你的应用程序。你应该在这里有超过3条路线,但有问题的路线是:

  1. register.show
  2. register.store
  3. login.show
  4. register.show上显示注册表单。在表单提交时,您将POST到register.store

    如果检测到错误register.store,请使用register.show

    重定向回return redirect('login.show')->with('message', 'Account number already exists. Login.');

    login.show使用

    检测$message
    @if(session('message'))
        {{session('message')}}
    @endif
    

答案 3 :(得分:0)

我建议使用https://laravel.com/docs/5.4/blade中的刀片助手or 如果存在则回应数据

{{ $name or 'Default' }}

可以是{{ $message or '' }}