Php 如何将图像标题转换为slug并保存到数据库?拉维尔
用户可以上传图像,我希望捕获提供的$request图像标题并将其转换为slug并保存到数据库中 UploadScreenShotController@upload:Php 如何将图像标题转换为slug并保存到数据库?拉维尔,php,laravel,laravel-5,eloquent,laravel-4,Php,Laravel,Laravel 5,Eloquent,Laravel 4,用户可以上传图像,我希望捕获提供的$request图像标题并将其转换为slug并保存到数据库中 UploadScreenShotController@upload: public function upload(Request $request) { if (!auth()->check()) return $this->with('error', 'Session has ended. Please refresh the page and try again.');
public function upload(Request $request)
{
if (!auth()->check()) return $this->with('error', 'Session has ended. Please refresh the page and try again.');
$request->validate([
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$image = $request->image;
$filename = $image->getClientOriginalName();
$request->image->move(public_path('images/tcpa/screenshots'), $filename);
return back()
->with('success', 'You have successfully uploaded an image.')
->with('image', $filename);
}
我的表格:
{!! Form::open(['method' => 'POST', 'files' => 'true', 'route' => ['admin.sms.tcpa-upload-screenshot']])!!}
{!! Form::file('image') !!}
{!! Form::submit('Upload File') !!}
{!! Form::close() !!}
此函数获取图像名称,但不会将其转换为slug,也不会保存在数据库中
如何将图像标题转换为slug并保存到数据库?放置“enctype”=>“多部分/表单数据”
放置“enctype”=>“多部分/表单数据”
您可以使用Sluggable包在项目中创建slug。这个软件包提供了一个特性,当保存任何有说服力的模型时,它将生成一个独特的slug 装置 您可以通过composer安装软件包:
`composer require spatie/laravel-sluggable`
下面是一个如何实现该特性的示例:
namespace App;
use Spatie\Sluggable\HasSlug;
use Spatie\Sluggable\SlugOptions;
use Illuminate\Database\Eloquent\Model;
class YourEloquentModel extends Model
{
use HasSlug;
/**
* Get the options for generating the slug.
*/
public function getSlugOptions() : SlugOptions
{
return SlugOptions::create()
->generateSlugsFrom('name')
->saveSlugsTo('slug');
}
}
还要记住在数据库表中添加一个slug字段。使用Laravel移植编辑当前表
例如:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateYourEloquentModelTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('your_eloquent_models', function (Blueprint $table) {
$table->increments('id');
$table->string('slug'); // Field name same as your `saveSlugsTo`
$table->string('name');
$table->timestamps();
});
}
}
然后,如果要使用此slug作为路由名称,请记住在模型文件中使用Laravel的隐式路由模型绑定:
/**
* Get the route key for the model.
*
* @return string
*/
public function getRouteKeyName()
{
return 'slug';
}
我认为它将帮助您您可以使用Sluggable包在项目中创建slug。这个软件包提供了一个特性,当保存任何有说服力的模型时,它将生成一个独特的slug 装置 您可以通过composer安装软件包:
`composer require spatie/laravel-sluggable`
下面是一个如何实现该特性的示例:
namespace App;
use Spatie\Sluggable\HasSlug;
use Spatie\Sluggable\SlugOptions;
use Illuminate\Database\Eloquent\Model;
class YourEloquentModel extends Model
{
use HasSlug;
/**
* Get the options for generating the slug.
*/
public function getSlugOptions() : SlugOptions
{
return SlugOptions::create()
->generateSlugsFrom('name')
->saveSlugsTo('slug');
}
}
还要记住在数据库表中添加一个slug字段。使用Laravel移植编辑当前表
例如:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateYourEloquentModelTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('your_eloquent_models', function (Blueprint $table) {
$table->increments('id');
$table->string('slug'); // Field name same as your `saveSlugsTo`
$table->string('name');
$table->timestamps();
});
}
}
然后,如果要使用此slug作为路由名称,请记住在模型文件中使用Laravel的隐式路由模型绑定:
/**
* Get the route key for the model.
*
* @return string
*/
public function getRouteKeyName()
{
return 'slug';
}
我认为,如果您可以在您的模型中使用引导方法,它将对您有所帮助
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
class YourEloquentModel extends Model
{
protected static function boot()
{
parent::boot();
self::creating(function ($model) {
$model->slug = Str::slug($model->name, '-');
});
}
}
其余的事情你可以按照他的回答去做;例如:迁移、路由模型绑定。如果您可以使用模型中的引导方法来完成
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
class YourEloquentModel extends Model
{
protected static function boot()
{
parent::boot();
self::creating(function ($model) {
$model->slug = Str::slug($model->name, '-');
});
}
}
其余的事情你可以按照他的回答去做;例如:迁移、路由模型绑定