当我输入 php artisan serve 时,laravel 试图获取非对象的属性

Posted

技术标签:

【中文标题】当我输入 php artisan serve 时,laravel 试图获取非对象的属性【英文标题】:laravel trying to get property of non-object when i type php artisan serve 【发布时间】:2016-03-25 04:48:08 【问题描述】:

我已经播种了一个管理员用户并覆盖了 postRegister() 方法。

我使用已播种的凭据登录。

登录后我尝试注册调用 auth/register。

    @extends('master')

@section('title','Creating.. User')

@section('content')
<div class="container-fluid">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Register</div>
                <div class="panel-body">
                    @if (count($errors) > 0)
                        <div class="alert alert-danger">
                            <strong>Whoops!</strong> There were some problems with your input.<br><br>
                            <ul>
                                @foreach ($errors->all() as $error)
                                    <li> $error </li>
                                @endforeach
                            </ul>
                        </div>
                    @endif

                    <form class="form-horizontal" role="form" method="POST" action=" url('/create') ">
                        !! csrf_field() !!

                        <div class="form-group">
                            <label class="col-md-4 control-label">Name</label>
                            <div class="col-md-6">
                                <input type="text" class="form-control" name="name" value=" old('name') ">
                            </div>
                        </div>

                        <div class="form-group">
                            <label class="col-md-4 control-label">E-Mail Address</label>
                            <div class="col-md-6">
                                <input type="email" class="form-control" name="email" value=" old('email') ">
                            </div>
                        </div>

                        <div class="form-group">
                            <label class="col-md-4 control-label">Password</label>
                            <div class="col-md-6">
                                <input type="password" class="form-control" name="password">
                            </div>
                        </div>

                        <div class="form-group">
                            <label class="col-md-4 control-label">Confirm Password</label>
                            <div class="col-md-6">
                                <input type="password" class="form-control" name="password_confirmation">
                            </div>
                        </div>

                        <div class="form-group">
                            <label class="col-md-4 control-label">Mobile</label>
                            <div class="col-md-6">
                                <input type="number" class="form-control" name="mobile">
                            </div>
                        </div>

                        <div class="form-group">
                            <label class="col-md-4 control-label">Team</label>
                            <div class="col-md-6">
                                <input type="number" class="form-control" name="team_id">
                            </div>
                        </div>
                        <!--
                        <div class="form-group">
                            <label class="col-md-4 control-label">Role</label>
                            <div class="col-md-6">
                                <input type="text" class="form-control" name="role">
                            </div>
                        </div>
                        -->
                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <button type="submit" class="btn btn-primary">
                                    Register
                                </button>
                            </div>
                        </div>

                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

现在,我以管理员身份登录后尝试注册。我这样做是为了创建用户。

这是我的 routes.php

Route::group(['middleware' => ['auth']],function()
    if(auth()->user()->id==1)
        Route::get('/create',function()
            return view('create');
        );
        //Route::post('/create','Auth/AuthController@create');
    
    else
        echo "You are not permitted to create user";
    
);
Route::controllers([
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController',
]);

这是我在 Auth\AuthController 中的 postRegister 方法:

public function postRegister(Request $request)

    $user = new User();
    $user->name = ucwords($request->input('name'));
    $user->email = strtolower($request->input('email'));
    $user->mobile = $request->input('mobile');
    $user->team_id = $request->input('team_id');
    $user->password = Hash::make($request->input('password'));

    $user->save();

    return "yes";

执行此操作后出现错误,然后我尝试使用 php artisan serve 重新启动服务器。现在,当我运行命令时出现错误异常。

C:\xampp\htdocs\mpms>php artisan serve

[ErrorException] 试图获取非对象的属性

【问题讨论】:

我犯了一个错误。我知道 auth()->guest() 会帮助它。 错误行号是什么 Routes.php line-2 .If 应该添加到 create 中。我不知道逻辑,但它对我有用。如果我在记录错误后尝试创建用户,我现在会收到另一个错误显示为“方法不允许”。谁能告诉我。登录后如何创建用户。 【参考方案1】:

route:group 的正确语法是

Route::group(['middleware' => 'auth'], function () 
    Route::get('/', function ()    
        // Uses Auth Middleware
    );
);

并在登录后创建用户添加此路由

Route::group(['middleware' => 'auth'],function()

        Route::get('/create',function() 
            return view('create');
        );
);

表单应该将数据发布到

action=" url('/auth/register') 

【讨论】:

我已经覆盖了方法 auth/register。我创建了一个管理员,管理员可以创建用户。我不能直接调用 post/register 方法。所以,我创建了一个新方法来存储用户..

以上是关于当我输入 php artisan serve 时,laravel 试图获取非对象的属性的主要内容,如果未能解决你的问题,请参考以下文章

当我在终端中键入 php artisan serve 时,我收到“需要 Mcrypt PHP 扩展”

当我想运行 php artisan serve 时可能会出现啥问题

在本地主机上运行 php artisan serve 命令时出错

Laravel:php artisan serve 无法启动

php artisan serve - 如何让mysql运行

php artisan serve [ErrorException] laravel