Intervention \ Image \ Exception \ ImageNotWritableException à l'aide de Laravel 4
Je suis avec Laravel 4. Je ne sais pas pourquoi j'obtiens ce message d'erreur lorsque tout semble être correct. Aussi, le produit n'est pas la mise à jour de la base de données.
Erreur: Intervention \ Image \ Exception \ ImageNotWritableException
Ne peut pas écrire de données d'image de chemin [/img/products/1396668877.jpg]
Extrait de contrôleur produits où le produit objet est créé:
public function postCreate() {
$validator = Validator::make(Input::all(), Product::$rules);
if ($validator->passes()) {
$product = new Product;
$product->category_id = Input::get('category_id');
$product->title = Input::get('title');
$product->description = Input::get('description');
$product->price = Input::get('price');
$image = Input::file('image');
$filename = time() . '.' . $image->getClientOriginalExtension();
Image::make($image->getRealPath())->resize(468, 249)->save('/img/products/'.$filename);
$product->image = 'img/products/'.$filename;
$product->save();
return Redirect::to('admin/products/index')
->with('message', 'Product Created');
}
return Redirect::to('admin/products/index')
->with('message', 'Something went wrong')
->withErrors($validator)
->withInput();
}
produit objet passé en vue
@foreach($products as $product)
<li>
{{ HTML::image($product->image, $product->title, array('width'=>'50')) }}
{{ $product->title }} -
{{ Form::open(array('url'=>'admin/products/destroy', 'class'=>'form-inline')) }}
{{ Form::hidden('id', $product->id) }}
{{ Form::submit('delete') }}
{{ Form::close() }} -
{{ Form::open(array('url'=>'admin/products/toggle-availability', 'class'=>'form-inline'))}}
{{ Form::hidden('id', $product->id) }}
{{ Form::select('availability', array('1'=>'In Stock', '0'=>'Out of Stock'), $product->availability) }}
{{ Form::submit('Update') }}
{{ Form::close() }}
</li>
@endforeach
Produits Modèle
<?php
class Product extends Eloquent {
protected $fillable = array('category_id', 'title', 'description', 'price', 'availability', 'image');
public static $rules = array(
'category_id'=>'required|integer',
'title'=>'required|min:2',
'description'=>'required|min:20',
'price'=>'required|numeric',
'availability'=>'integer',
'image'=>'required|image|mimes:jpeg,jpg,bmp,png,gif'
);
public function category() {
return $this->belongsTo('Category');
}
}
produits table dans la base de données
public function up()
{
Schema::create('products', function($table){
$table->increments('id');
$table->integer('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('categories');
$table->string('title');
$table->text('description');
$table->decimal('price', 6, 2);
$table->boolean('availability')->default(1);
$table->string('image');
$table->timestamps();
});
}
OriginalL'auteur Stephen Tafler | 2014-04-05
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que le
public/img/products
dossier existe et il est accessible en écriture et aussi essayer d'utiliser le chemin absolu, si nécessaire, comme ceci:OriginalL'auteur The Alpha
remplacer :
avec:
vous devez spécifier le
public
dossier pour lesave
méthode.OriginalL'auteur DevMarwen