Проблема с контроллером laravel5. Неопределенная переменная: имя файла - PullRequest
1 голос
/ 18 января 2020

Я хочу загрузить изображение профиля блоггера, но получаю ошибку:

Неопределенная переменная: имя_файла.

Я думаю, что это проблема с контроллером. Я не знаю, почему переменная не определена, хотя я объявил то же имя переменной. Я перезапустил сервер, но он не работал.

Поэтому, пожалуйста, помогите мне.

BloggerController. php

public function store(Request $request, User $user_id)
{
    $user_id = DB::table('users')->where('id', $user_id)->get();

    if ($request->hasfile('image')) {
        $file = $request->file('image');
        $ext = $file->getClientOriginalExtension();
        $file_name = time() . '.' . $ext;
        $file->move('bloggers/', $file_name);
    }

    $blog = Blog::create(
        ['user_id' => $user_id],
        [
            'image'        => $file_name,
            'introduction' => $request->introduction,
        ]
    );

    return redirect(route('blogger'));
}

Я также изменил метод хранения.

if ($request->hasfile('image')) {
    $file_name = $request->file('image')->getClientOriginalName();
    $request->file('image')->storeAs('bloggers/', $file_name);
}

Моя миграция

Schema::create('blogs', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->integer('user_id')->unsigned();
    $table->foreign('user_id')->references('id')->on('bloggers');
    $table->string('image');
    $table->string('introduction');
    $table->timestamps();
});

error image

Ответы [ 3 ]

1 голос
/ 18 января 2020

Чтобы быть уверенным, что ваша переменная $ fillename доступна, измените код на

if($request->hasfile('image')){
      $file = $request->file('image');
      $ext = $file->getClientOriginalExtension();
      $filename = time().'.'.$ext;
      $file->move('bloggers/', $filename);

      $blog = Blog::create(
            ['user_id' => $user_id],
            [
                'image'=>$filename,
                'introduction' => $request->introduction,
            ]
        );
}
0 голосов
/ 18 января 2020

Вы пытались получить доступ к переменной вне области видимости. Сделайте его внешней переменной, объявив ее вне функции if, как показано ниже в строке 2 кода. ...

public function store(Request $request, User $user_id){
        $file_name="";
        $user_id = DB::table('users')->where('id', $user_id)->get();
        if($request->hasfile('image')){
            $file = $request->file('image');
            $ext = $file->getClientOriginalExtension();
            $file_name = time().'.'.$ext;
            $file->move('bloggers/', $file_name);
        }


        $blog = Blog::create(
            ['user_id' => $user_id],
            [
                'image'=>"/bloggers/".$file_name,
                'introduction' => $request->introduction,
            ]
        );
        return redirect(route('blogger'));
    }

...

0 голосов
/ 18 января 2020

вы должны вернуть адрес файла и имя в загрузчике

public function store(Request $request, User $user_id){

        $user_id = DB::table('users')->where('id', $user_id)->get();
        if($request->hasfile('image')){
            $file = $request->file('image');
            $ext = $file->getClientOriginalExtension();
            $file_name = time().'.'.$ext;
            $file->move('bloggers/', $file_name);
        }


        $blog = Blog::create(
            ['user_id' => $user_id],
            [
                'image'=>"/bloggers/".$file_name,
                'introduction' => $request->introduction,
            ]
        );
        return redirect(route('blogger'));
    }

я думаю, что его работа

...