laravel 5.2中的未定义变量不知道原因

时间:2016-07-26 15:03:48

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

我想在我的视图页面上显示保存在数据库中的内容。我已经应用了用户和帐户之间的关系。

我在用户和帖子之间有另一种关系,它正常运作。

我得到的错误是:

  

0401a2c6f4dbf412d9f16ba1e4ced9e54c8bb622.php第132行中的ErrorException:   未定义的变量:accounts(查看:E:\ wamp \ www \ gal \ resources \ views \ myplace.blade.php)

我的观看代码:

<form action="{{route('account')}}" id="acc" method="post">
  <div class="col-lg-3"><label>Estado</label>
  @foreach($accounts as $account)
  <textarea  style="display:none;" name="textfield4" id="textfield4">{{$account->estado}}</textarea></div>
  <div class="col-lg-2 es" id="estado"></div>
  @endforeach

我的控制员:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\User;
use App\Account;
use Illuminate\Support\Facades\Auth;

class AccountController extends Controller
{
    public function account(Request $request)
    {
        $account = new Account();
        $account->estado = $request['textfield4'];
        $request->user()->accounts()->save($account);

        return redirect()->route('myplace');
    }

    public function getaccount()
    {
        User::find(Auth::id())->accounts;
        $accounts = Account::orderBy('created_at','desc')->get();

        return view('myplace',['accounts'=>$accounts]);
    }
}

2 个答案:

答案 0 :(得分:0)

而不是:

return view('myplace',['accounts'=>$accounts]);

您可以在Controller中使用compact:

return view('myplace')->with(compact('accounts'));

答案 1 :(得分:0)

鉴于此代码......

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\User;
use App\Account;
use Illuminate\Support\Facades\Auth;

class AccountController extends Controller
{
    public function account(Request $request)
    {
        $account = new Account();
        $account->estado = $request['textfield4'];
        $request->user()->accounts()->save($account);

        return redirect()->route('myplace');
    }


    public function getaccount()

    {
        User::find(Auth::id())->accounts;
        $accounts = Account::orderBy('created_at','desc')->get();

        return view('myplace',['accounts'=>$accounts]);
    }
}

$account->estado = $request['textfield4'];应为$account->estado = $request->input('textfield4', 'some_default_value');

User::find(Auth::id())->accounts;几乎没有任何内容,因为您不保存结果,$accounts = Account::orderBy('created_at','desc')->get();正在对所有帐户进行排序。

关于如何使用orderBy显示您的任何帐户可能是由于没有任何关于选择内容或条件的查询。默认值可能有所帮助,但如果你有一些时髦的东西,它可能会被打破。如果没有更多代码,我们就无能为力。

我对此有另一种猜测,return view('myplace',['accounts'=>$accounts]);应为return view()->make('myplace',['accounts'=>$accounts]);

编辑:

他的问题是他正在导航到/ myplace,它没有路由到getaccount()它路由到getmyplace(),它没有传递$ accounts变量。