2015-05-08 17 views
9

İçindeyim "PostsTable.php" Resim dosyalarını işlemek için form verileri almaya çalışıyorum. CakePHP'de 2'de

, yapacak kullandı:

public function beforeSave($options = array()) 
{ 
if(!empty($this->data['Post']['picture']['name'])... 

Birisi Cake 3'te bu açıklayabilir:

beforeSave 
Cake\ORM\Table::beforeSave(Event $event, Entity $entity, ArrayObject $options) 

?

public function beforeSave($options) 
{ 
if(!empty($entity->pic1['name'])) 
{ 
$entity->pic1 = 'jus a test'; 
} 

Teşekkür:

Ben sadece bir test olarak veritabanında bu alanı kurtarmak mümkün olup olmadığımı görmek için bu kod parçacığını çalışıyorum ama BeforeSave gözardı ediliyor gibi görünüyor

EKLENDİ

cevap

-5

sizin için bana read the manual edelim:

Model.beforeSave olayı, her varlık kaydedilmeden önce tetiklenir. Bu olayı durdurmak, kaydetme işlemini iptal edecektir. Etkinlik durdurulduğunda, olayın sonucu iade edilir. Ayrıca

:

Model.beforeSave: sadece hesaplanır kalıcı için alanlar listesinde önce tetiklediği olacak. Hem varlık hem de seçenekleri argüman olarak alır. Seçenekler dizisi bir DiziNesnesi olarak geçirilir, bu nedenle tasarruf işlemi geri kalanı için kullanılabilecek şekilde oluşan tüm değişiklikler her dinleyici yansıyan ve etkinliğin sonunda hatırlanacaktır. Dinleyicilerin herhangi birinde yanlış geri dönüş, kaydetme sürecini iptal edecektir. Etkinlik, etkinlik API'sı kullanılarak durdurulursa, event nesnesinin result özelliği döndürülür. Bu, bir dinleyici içerisinde kendi tasarruf stratejinizi uygularken yararlı olabilir.

Eğer kişiler Model::$data özelliğini yerini almıştır çünkü daha önce Cake2 içinde sadece $entity değiştirebilir ne yaptıysa yapmak için. Olayların nasıl işlediğini bilmiyorsanız read about them. Ayrıca the migration guide mutlaka okunmalıdır. Değişen her şeyi listeler.

+0

Bunu değiştirdim ama beforeSave göz ardı ediliyor gibi görünüyor. Bunu denedim denedim sadece bir test olarak sordum ama isim belirlenmedi. –

+0

@burzump sadece burada oldu: Yapmaya çalıştığım şeyi aldım ama daha önce BeforeAveshal yerine önce kullanıyorum. Problem var mı? Sadece veritabanındaki yolu ve dosyayı bir klasöre kaydetmek istiyorum. Fakat BeforeSave göz ardı ediliyor gibi görünüyor ... –

+0

Kullanım kılavuzunu okuyun;) 'Model.TheforeMarshal olayını, varlık verilerine dönüştürülmeden önce istek verilerini değiştirmek için kullanabilirsiniz. 'Sizin için neden çalışmadığı konusunda hiçbir fikrim yok. – burzum

7

fonksiyon tanımına sahip Başlat.

// In PostsTable.php 
public function beforeSave($event, $entity, $options) { 

} 

Eğer olmanın hangi verilerin emin değilseniz: CakePHP'nin otomatik işlevini çağırarak olduğundan

Cake\ORM\Table::beforeSave(Event $event, EntityInterface $entity, ArrayObject $options) 

, işte bu çağrıldığını nasıl yani fonksiyon tanımına aynı senin faaliyetleri oluşturmak olduğunu Eğer $entity verilerinizi bulduktan sonra verilerinize ne yapmak istediğinizi yapmak için kullanabilirsiniz

debug($event); debug($entity); debug($options); 

: gönderilen, CakePHP'nin debug() işlevini kullanın

if(!empty($entity->picture['name'])... 
İlgili konular