Возвращаемое представление: неопределенная переменная Laravel - PullRequest
0 голосов
/ 05 июня 2018

ERORR Неопределенная переменная: списки

Пользователи создают рекламный листинг для продажи:

    $listing->user_id = auth()->user()->id;
    $listing->email= auth()->user()->email;
    $listing->phone_number= auth()->user()->phone_number;
    $listing->package = $request->session()->get('package');
    $listing->save();
    return view('user.dashboard');

После того, как они переносятся на страницу панели инструментов

@if($listings->isEmpty())
<div class="padding-top"> 
    <h1 class="centre">None</h1>
</div>
@else

@endif

@foreach ($listings as $listing)

<div class="row">

  <div class="container">
    <div class="card">
      <div class="card-body row">
        <h5 class="card-title cardtitle col-lg-12 centre">{{$listing->address}}</h5>

неполный html, а просто выдержка

РЕДАКТИРОВАНИЕ ДОБАВЛЕННОГО ПОЛНОГО КОНТРОЛЛЕРА Использование обратного представления ('user.dashboard', ['lists' => $ перечисление]);по-прежнему выдает ошибку

 public function store(Request $request)
    {

        $this->validate($request, [
            'image1' => 'image|nullable|max:1999',
            'image2' => 'image|nullable|max:1999'
        ]);

        // Handle File Upload
        if($request->hasFile('image1')){
            // Get filename with the extension
            $filenameWithExt = $request->file('image1')->getClientOriginalName();
            // Get just filename
            $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
            // Get just ext
            $extension = $request->file('image1')->getClientOriginalExtension();
            // Filename to store
            $fileNameToStore= $filename.'_'.time().'.'.$extension;
            // Upload Image
            $path = $request->file('image1')->storeAs('public/cover_images', $fileNameToStore);
        } else {
            $fileNameToStore = 'noimage.jpg';
        }

        $listing = new Listings;
        $listing->user_id = auth()->user()->id;
        $listing->email= auth()->user()->email;
        $listing->phone_number= auth()->user()->phone_number;
        $listing->package = $request->session()->get('package');
        $listing->save();
        $listing->image1 = $fileNameToStore;
        return view('user.dashboard', ['listings' => $listing]);

}

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Измените

return view('user.dashboard');

на

return view('user.dashboard', compact('listing'));

Я думаю, что причина довольно ясна.

0 голосов
/ 05 июня 2018

Я думаю, вы не импортируете модель в контроллер, используя пространство имен.попробуйте проверить, используя пространство имен «Использовать аутентификацию»

use App\Listing_Model;
use auth;

class DashboardController extends Controller {
    public function index() {


    $listing = new Listing_Model; 
    $listing->user_id = auth()->user()->id;
    $listing->email= auth()->user()->email;
    $listing->phone_number= auth()->user()->phone_number;
    $listing->package = $request->session()->get('package');
    $listing->save();
    return view('user.dashboard');

    }
}
0 голосов
/ 05 июня 2018

Вам нужно передать $listing вашему представлению следующим образом:

return view('user.dashboard', compact('listing');

Редактировать:

Конечно, ваши переменные должны иметь одинаковые имена в вашем контроллере и представлении.Теперь у вас есть несоответствие, когда вы называете свою переменную $listing в контроллере, но называете ее $listings в своем представлении.Ваш код должен выглядеть следующим образом:

$listings->user_id = auth()->user()->id;
$listings->email= auth()->user()->email;
$listings->phone_number= auth()->user()->phone_number;
$listings->package = $request->session()->get('package');
$listings->save();
return view('user.dashboard', compact('listings');

Тогда вы можете вызвать переменную как $listings в вашем представлении, так что ваш код представления не должен изменяться.

РЕДАКТИРОВАТЬ 2:

$listing - ОДИН экземпляр модели Listings.Таким образом, вы не можете вызвать метод empty() для объекта.Я думаю, что вы хотите сделать что-то вроде этого:

$listing = new Listings;
$listing->user_id = auth()->user()->id;
$listing->email= auth()->user()->email;
$listing->phone_number= auth()->user()->phone_number;
$listing->package = $request->session()->get('package');
$listing->save();
$listing->image1 = $fileNameToStore;
$listings = Listings::all();
return view('user.dashboard', compact('listings'));

Вам это удастся?

Ps.Вы хотите установить атрибут image1 ПОСЛЕ сохранения?Это потеряется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...