Моя переменная в контроллере не загружена в блейд - PullRequest
0 голосов
/ 06 марта 2020

Вопрос

Почему моя переменная в ProfileController не загружена в мой блейд (index2.blade.php)?

Сообщение об ошибке

Undefined variable: plus (View: /work/resources/views/stories/index2.blade.php)

Мои коды

routes/web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('login'); 

Route::match(['get','post','middleweare'=>'auth'], '/', 
    'StoriesController@index',
    'StoriesController@store',
    'ProfileController@index',
    'ProfileController@store'
);

Route::match(['get','post','middleweare'=>'auth'], 'stories/create',
    'StoriesController@add',
    'StoriesController@upload'
);

Route::match(['get','post','middleweare'=>'auth'], 'profile/create',
    'ProfileController@add',
    'ProfileController@upload'
);

Route::group(['middleweare' => 'auth','name'=>'profile'], function () {
    Route::get('/profile/edit', 'ProfileController@edit');
});

Route::get('/home', 'HomeController@index')->name('home');

Auth::routes();


app/Http/Controllers/ProfileController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\stories;
use App\History;
use App\Posts;
use Carbon\Carbon;
use Storage;

class ProfileController extends Controller
{

    public function index(Request $request) 
    {

      $plus = Posts::all();

      return view('stories.index2', compact('plus'));
    }

    public function upload(Request $request)
      {
        $this->validate($request, [
          'file' => [

            'required',
            'file',
            'image',
            'mimes:jpeg,png',
          ]
        ]);

        if ($request->file('file')->isValid([])) {
          $path = $request->file->store('public');
          return view('stories.index2')->with('filename', basename($path));
        } else {
          return redirect()
            ->back()
            ->withInput()
            ->withErrors();
        }
    }

    public function store(Request $request)
    {

      $d = new \DateTime();
      $d->setTimeZone(new \DateTimeZone('Asia/Tokyo'));
      $dir = $d->format('Y/m');
      $path = sprintf('public/posts/%s', $dir);


      $data = $request->except('_token');

      foreach ($data['plus'] as $k => $v) {

        $filename = '';


        $posts = Posts::take(1)->orderBy('id', 'desc')->get();

        foreach ($posts as $post) {

          $filename = $post->id + 1 . '_' . $v->getClientOriginalName();
        }
        unset($post);


        if ($filename == false) {
          $filename = 1 . '_' . $v->getClientOriginalName();
        }


        $v->storeAs($path, $filename);

        $post_data = [
          'path' => sprintf('posts/%s/', $dir),
          'name' => $filename
        ];
        $a = new Posts();
        $a->fill($post_data)->save();
      }

      unset($k, $v);

      return redirect('/');
    }


    public function create(Request $request)
      {
        $this->validate($request, Profile::$rules);

        $profile = new Profile;
        $form = $request->all();


        unset($form['_token']);

        $profile->fill($form);
        $profile->save();

        return redirect('/');
      }

    public function add()
      {
        return view('profile.create2');
      }

    public function edit()
      {
        return view('profile.edit');
      }






}

resources/views/stories/index2.blade.php

@extends('layouts.front2')
@section('title','mainpage')

@section('content')
<div class="profile">

    <div class="profileimg">
        @foreach ($plus as $pplus)
        <img src="/storage/{{ $pplus->path . $pplus->name }}" style="height: 210px; width: 210px; border-radius: 50%;">
        @endforeach
    </div>

    <div class="name">
        @guest
        <a class="nav-link2" href="{{ route('register')}}">{{ __('Create Accout!')}}</a>
        @else
        <a id="navbarDropdown" class="nav-link2" href="#" role="button">
            {{Auth::user()->name}}<span class="caret"></span></a>



        <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
            @csrf
        </form>
    </div>
    @endguest


    <div class="aboutme">
        You can write your profile here!You can write your profile here!You can write your profile here!
        You can write your profile here!You can write your profile here!You can write your profile here!
        You can write your profile here!You can write your profile here!You can write your profile here!
        You can write your profile here!You can write your profile here!You can write your profile here!
        You can write your profile here!You can write your profile here!You can write your profile here!
    </div>

</div>

<div class="new">

    <div class="newtitle">
        <h1>New</h1>
    </div>

    <div class="container1">

        @foreach ($plus as $pplus)
        <img src="/storage/{{ $pplus->path . $pplus->name }}" class="images" style="height: 150px; width: 150px; border-radius: 50%;">
        @endforeach
        <div class="more">
            more...
        </div>
    </div>

</div>

<div class="stories">

    <div class="titlestories">
        <h1>Stories</h1>
    </div>

    <div class="container2">

        <div class="titleclose">
            <h2>#CloseFriends</h2>
        </div>

        <div class="titlefollow">
            <h2>#Follows</h2>
        </div>




    </div>
</div>

{{ csrf_field() }}
@endsection

Ответы [ 2 ]

1 голос
/ 06 марта 2020

В вашем методе загрузки вам не хватает переменной $plus

Измените ее на

public function upload(Request $request)
      {
        $this->validate($request, [
          'file' => [

            'required',
            'file',
            'image',
            'mimes:jpeg,png',
          ]
        ]);

        if ($request->file('file')->isValid([])) {
          $path = $request->file->store('public');
          $filename = basename($path);
          $plus = Posts::all();
          return view('stories.index2', compact('filename','plus'));
        } else {
          return redirect()
            ->back()
            ->withInput()
            ->withErrors();
        }
    }
0 голосов
/ 06 марта 2020

return view('stories.index2, [ 'plus' => Posts::all() ]); должно работать.

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