2012-04-25 26 views
5

Tôi đang lưu một cá thể mô hình thực hiện một số hành động trong chức năng mô hình "beforeSave".
Tôi muốn thêm một số lỗi/tin nhắn vào mẫu và sau đó lấy chúng trong bộ điều khiển và hiển thị cho người dùng.
Khi đến nay tôi có hai ý tưởng làm thế nào để thực hiện điều này:Lỗi mô hình tùy chỉnh Yii

  • Sử dụng một thuộc tính giả với ActiveRecord chức năng "addError": $this->addError("dummy"=>"my message"); Nó không phải là cách tốt nhất để làm điều đó như tôi sẽ phải phát minh thuộc tính giả mới.
  • Thêm một tài sản mới "custom_errors" với mô hình và chức năng "addCustomErrors"

Có thể có được một cách built-in để làm điều đó hay một phần mở rộng?
Dù sao tôi có thể làm như thế nào?

+4

Bạn muốn thêm thông báo lỗi trong 'beforeSave'? Đó không phải là một ý tưởng tốt, tại sao bạn không làm điều đó trong khi xác nhận? – Jon

+0

gây ra ví dụ tôi tải lên một tập tin và phải kiểm tra nó được tải lên máy chủ, hoặc tôi thực hiện các hành động khác như xóa bộ nhớ cache và như vậy không có gì để làm với xác nhận – lvil

+1

Tất cả điều này sẽ hoàn tất thành công * trước * bạn gọi 'save' mặc dù ... – Jon

Trả lời

6

Bạn có thể sử dụng addError() nhưng không có nhu cầu để tạo nên các thuộc tính giả. Nếu một lỗi không liên quan đến bất cứ điều gì trên mô hình riêng của mình thì bạn làm gì đó sai: p

Vì vậy, trong trường hợp của bạn nó sẽ là một cái gì đó như:

$this->addError('file', 'Something happened I wasn\'t pleased with'); 

nếu có bất kỳ lỗi khác trên thuộc tính file, chúng sẽ được tạo thành để bạn không cần phải lo lắng về việc ghi đè.

+0

chỉ là một câu hỏi. nếu tôi muốn truyền một thông điệp không phải là lỗi. giả sử tôi muốn thay thế tệp đã tải lên và muốn thông báo cho người dùng rằng nó đã được thay thế. Nếu tôi làm cho nó trong addError, tôi không chắc chắn mô hình sẽ được lưu lại, vì nó có lỗi. – lvil

+0

Thêm lỗi không ảnh hưởng đến việc lưu mô hình. miễn là nó xác nhận nó nên tiết kiệm – Paystey

+0

Tôi cần phải xác nhận rằng hồ sơ không được tạo ra tại một thời điểm sai trong ngày. Tôi đang làm gì sai? – Gherman

2

Tôi không thấy sự cố ở đây. Đơn giản chỉ cần sử dụng addError() http://www.yiiframework.com/doc/api/1.1/CModel#addError-detail. Mô hình này được giữ ngay cả sau khi gọi save() vào nó, vì vậy bạn chỉ có thể làm một cái gì đó giống như

yourController() 
{ 
    do_something(); 
    do_something(); 
    $model->save(); 
    $errors[]=do_what_you_have_to_do_to_define_the_errors_which_will_be_added(); 
    $model->addError(attribute, $errors); 
    $this->render(viewWhereTheErrorWillBeDisplayed, $model); 
} 
+0

Câu hỏi đặt ra là cách thêm lỗi mà không có bất kỳ thuộc tính nào – Gherman

Các vấn đề liên quan