Как передать метод в случаях, когда мне не нужно использовать Laravel, пытаясь получить свойство 'id' не-объекта - PullRequest
0 голосов
/ 12 июня 2018

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

У меня есть это на моемконтроллер для загрузки изображений:

public function setUniqueNameAttribute(){
        $this->unique_name = md5(Auth::user()->id . time());
    }
public function getUniqueNameAttribute(){
    return $this->unique_name;
}

public function uploadImage($request, $element, $id) {

    if ($request->hasFile('question_image') || $request->hasFile('image_path') || $request->hasFile('avatar') || $request->hasFile('contact_image')) {


        $thumbnailsRules = require_once __DIR__ . '/ThumbnailRules.php';
        $this->setUniqueNameAttribute();
        if($element == 'questions'){
            $ImageToUpload = $request->file('question_image');
        }elseif($element == 'answers'){
            $ImageToUpload = $request->file('image_path');
        }elseif($element == 'users'){
            $ImageToUpload = $request->file('avatar');
        }elseif($element == 'contacts'){

            $ImageToUpload = $request->file('contact_image');
        }


        //create folders if they do not exist
        foreach ($thumbnailsRules as $key => $rule) {
            if (File::exists(storage_path('/app/public/institutions/' . $this->institution_storage . '/images/' . $element . '/' . $id . '/' . $rule['name'] . '/')) == false) {
                Storage::disk('public')->makeDirectory('/institutions/' . $this->institution_storage . '/images/' . $element . '/' . $id . '/' . $rule['name']);
                Storage::disk('public')->makeDirectory('/institutions/' . $this->institution_storage . '/images/' . $element . '/' . $id . '/original/');
            }
        }
        //save the photos to the server
        $image = Image::make($ImageToUpload);
        $image->save(storage_path('/app/public/institutions/' . $this->institution_storage . '/images/' . $element . '/' . $id . '/original/' . $this->getUniqueNameAttribute() . '.jpeg'));
        foreach ($thumbnailsRules as $key => $rule) {
            $image = Image::make($ImageToUpload)->resize($rule['width'], $rule['height'], function ($c) {
                $c->aspectRatio();
                $c->upsize();
            });
            $image->save(storage_path('/app/public/institutions/' . $this->institution_storage . '/images/' . $element . '/' . $id . '/' . $rule['name'] . '/' . $this->getUniqueNameAttribute() . '.jpeg'));
        }
    } 
}

Это прекрасно работает для question_image, image_path и аватара, потому что это я использую после того, как я вошел в систему, поэтому я могу использовать это:

 $this->setUniqueNameAttribute();

Но дляизображение контакта Я должен использовать это до входа в систему, поэтому мне не нужно использовать это:

$this->setUniqueNameAttribute();

Это дает мне эту ошибку:

Trying to get property 'id' of non-object

Есть ли способ пройтичерез это без получения ошибки ..?

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