🙆♀️
Laravel-adminでテキストエディタを作る。画像アップロードあり
Laravel-adminでブログ機能などを作るときに、テキストエディタが欲しい時があります。
1回Laravel-Adminで構築したときに、画像アップロードの機能の付け方が分からなかったのですが、再チャレンジしてみたところ、結構簡単にできたので、メモがてら残しておきたいと思います。
テキストエディタを設定する
ckeditorをインストール
composer require laravel-admin-ext/ckeditor
設定ファイルの出力
php artisan vendor:publish --tag=laravel-admin-ckeditor
config/admin.php
を編集します
'extensions' => [
'ckeditor' => [
//Set to false if you want to disable this extension
'enable' => true,
// Editor configuration
'config' => [
]
]
]
formにテキストエディタを設置する
$form->ckeditor('content');
これだけで、テキストエディタが設置できました!
画像アップロードできるようにする
初期設定の画像アップロードではURLを入力してその画像を表示するという機能なので、画像をアップロードして表示するということができません。
なので、画像をアップロードして文の途中に入れられるようにします。
admin.phpのextensionsに追記します。
この/admin/uploadは、画像アップロードした際に処理を行うURLです。
'extensions' => [
'ckeditor' => [
'enable' => true,
'config' => [
'filebrowserImageUploadUrl' => '/admin/upload', // 追記する
]
]
],
では、このURLのルーティング設定を行います。
Admin/route.phpに追記します。
$router->post('/upload', 'FileUploadController@index');
処理するためのコントローラを作ります。
app/Admin/Controllers/UploadController.php を作成して、indexメソッドを作ります。
<?php
namespace App\Admin\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class FileUploadController extends Controller
{
public function index(Request $request)
{
$image = $request->file('upload');
$path = $image->store('/admin/image', 'admin'); // ランダム文字列のファイル名で保存する
$fileName = pathinfo($path)['basename']; // 保存後のファイル名を取得
$url = "/uploads/admin/image/" . $fileName; // アップロードした後に画像が見れるURLを設定してください
$param = [
'uploaded' => 1,
'fileName' => $fileName,
'url' => $url
];
return response()->json($param, 200);
}
}
この画像アップロードの時はCSRFを無効にする
app/Http/Middleware/VerifyCsrfToken.php
に追記します。
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'/admin/upload',
];
}
これで、画像アップロードして挿入することも可能になりました。
Laravel-adminがめちゃめちゃ便利ですね。
Discussion