Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Ошибка "could not find driver" » 01.07.2016 17:49:56

Забыл сказать, после открытия расширений на php, выдает в терминале еще это pastebin.com/MB6M54Zt
типа "Невозможно загрузить динамическую библиотеку".

#2 Laravel 5.x » Ошибка "could not find driver" » 01.07.2016 17:29:10

HeartProgrammer
Ответов: 2

Установил ubuntu 16.04 php5.6 mysql и apache2. Загрузил свой проект на laravel 5.1.
Запускаю локальный хост командой php artisan serve, после запускает он локальный хост, при открытие этого адреса localhost:8000 выдает такую ошибку

http://s017.radikal.ru/i400/1607/a2/62ba50057c18.png

Открыл файл php.ini который лежит по такому пути /etc/php/5.6/cli/php.ini

Там открыл те разрешения которые нужны

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_exif.dll      ; Must be after mbstring as it depends on it
;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll

; The MIBS data available in the PHP distribution must be installed. 
; See http://www.php.net/manual/en/snmp.installation.php 
;extension=php_snmp.dll

;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
extension=php_xsl.dll

Все равно выдает туже ошибку. Что неправильно сделал?

#3 Re: Laravel 5.x » Прошу поправить мой код с отправкой файла на сервер » 23.06.2016 20:38:44

Stokke пишет:

Ну, по идее должно работать big_smile во всяком случае у меня в подобном коде все нормально. Правда я пользуюсь Intervention Image пакетом, хз.
Сделай dd($news) и посмотри чего там вообще происходит

Получил следующее http://s017.radikal.ru/i431/1606/79/ea5ae9e7ff3f.png

#4 Re: Laravel 5.x » Прошу поправить мой код с отправкой файла на сервер » 23.06.2016 00:33:58

Stokke пишет:

В контроллере поменяй вот это

$file = $requestData->input('image');

на вот это

$file = $requestData->file('image');

Спасибо вам за помощь, все получилось. Теперь возник вопрос, а как же обновлять мою картинку? Допустим загрузил не ту картинку по случайности, и хочу её редактировать.

Пробовал так, но картинка не меняется и не добавляется в корневую папку на сервер.

public function update($id, PublishNewsRequest $requestData)
    {
        $news = News::find($id);

        $news->title = $requestData['title'];
        $news->description = $requestData['description'];
        $news->full_description = $requestData['full_description'];
        $news->author = $requestData['author'];

        if($requestData->hasFile('image'))
        {
            $file = $requestData->file('image');
            $timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());
            $name = $timestamp . '-' . $file->getClientOriginalName();
            $news->file_path = $name;
            $file->move(public_path() . '/images/', $name);
        }

        $news->save();

        return redirect()->route('news.index');
    }

#5 Laravel 5.x » Прошу поправить мой код с отправкой файла на сервер » 22.06.2016 22:01:36

HeartProgrammer
Ответов: 4

Есть сайт новостной, уже сделал на сайте функции "Добавить новость", "Редактировать новость", "Удалить новость".

Моя форма добавления новости на сайт

<form action="{{ route('news.store') }}" method="POST" enctype="multipart/form-data">
    <div class="auth-control">
        <label class="auth-control_label" for="title">Заголовок</label>
        <input class="auth-control_input" placeholder="Введите заголовок" type="text" name="title" required autofocus>
    </div>
    <div class="auth-control">
        <label class="auth-control_label" for="image">Картинка</label>
        <input class="auth-control_input" type="file" name="image" id="image">
    </div>
    <div class="auth-control">
        <label class="auth-control_label" for="description">Описание</label>
        <input class="auth-control_input" placeholder="Введите описание" type="text" name="description" required autofocus>
    </div>
    <div class="auth-control">
        <label class="auth-control_label" for="full_description">Полное описание</label>
        <textarea class="auth-control_textarea" name="full_description" id="full_description" cols="30" row="10" required></textarea>
    </div>
    <div class="auth-control">
        <label class="auth-control_label" for="author">Автор</label>
        <input class="auth-control_input" placeholder="Введите автора" type="text" name="author" required autofocus>
    </div>
    <div class="auth-control button-control">
        <button class="auth-control_button" type="submit">Добавить</button>
    </div>

    <input type="hidden" name="_token" value="{{ csrf_token() }}">

</form>

Как вы видите при добавлении новой новости на сайт есть поля такие как:
"Заголовок", "Описание", "Полное описание", "Автор". Это все правильно работает.
Но есть проблема, а проблема с изображением. Надо чтобы ты мог заполнять все поля, и выбирать одну нужную картинку для новости, и чтобы она проходила через валидацию и меняла формат изображения а так же размер картинки.

Вот сам метод store моего контроллера NewsController:

public function store(PublishNewsRequest $requestData)
    {
        $news = new News;
        $news->title = $requestData['title'];
        $news->description = $requestData['description'];
        $news->full_description = $requestData['full_description'];
        $news->author = $requestData['author'];
        $news->destination_path = $requestData['destination_path'];

        if($requestData->hasFile('image'))
        {
            $file = $requestData->input('image');
            $timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());
            $name = $timestamp . '-' . $file->getClientOriginalName();
            $news->filePath = $name;
            $file->move(public_path() . '/images/', $name);
        }

        $news->save();

        return redirect()->route('news.index');
    }

Моя миграция:

public function up()
    {
        Schema::create('news', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('description');
            $table->text('full_description');
            $table->string('author');
            $table->string('file_path');
            $table->timestamps();
        });
    }

Моя модель:

class News extends Model
{
    protected $table = 'news';
    protected $fillable = [
        'title',
        'description',
        'full_description',
        'author',
        'file_path',

    ];
}

Мои роуты относящийся к моему контроллеру NewsController:

Route::get('/', ['as' => 'news.index', 'uses' => 'NewsController@index']);
Route::post('news', ['as' => 'news.store', 'uses' => 'NewsController@store']);
Route::get('news/create', ['as' => 'news.create', 'uses' => 'NewsController@create' ]);
Route::patch('news/{news}', ['as' => 'news.update', 'uses' => 'NewsController@update']);
Route::get('news/{news}', ['as' => 'news.show', 'uses' => 'NewsController@show']);
Route::put('news/{news}', ['as' => 'news.update', 'uses' => 'NewsController@update']);
Route::get('news/{news}/edit', ['as' => 'news.edit', 'uses' => 'NewsController@edit']);
Route::delete('news/{news}', ['as' => 'news.destroy', 'uses' => 'NewsController@destroy']);
Route::post('upload', ['as' => 'upload.image', 'uses' => 'NewsController@uploadImage']);

Прошу опытных разработчиков на laravel подправить мой код. В данный момент ругается на ошибку $name = $timestamp . '-' . $file->getClientOriginalName();
Выдает такую ошибку Call to a member function getClientOriginalName() on null.

PS Сразу говорю, загрузку файлов на сервер никогда на php не делал, возможно много ошибок в коде у меня, так как я полностью алгоритм загрузки файла на сервер не знаю. Прошу знающим людям помочь мне.

Подвал раздела