Tôi đang sử dụng hàm afterFind để sửa đổi dữ liệu từ hàm tìm kiếm. Nó hoạt động tốt. Nếu tôi di chuyển hàm afterFind vào một hành vi (trong một plugin) nó vẫn hoạt động, nhưng chỉ khi mô hình quan tâm là mô hình chính, tức là nó không được gọi khi mô hình thuộc về một mô hình khác. co đuơng nao quanh đây không? Tôi đang sử dụng bánh 1.3.4. Đây là một phiên bản đơn giản hóa của hành vi:hành vi cakephp afterFind không được gọi trên các mô hình liên quan
class ChemicalStructureBehavior extends ModelBehavior {
function afterFind(&$model, $results, $primary) {
foreach ($results as &$unit) {
// format chemical formula (with subscripts)
$unit[$model->alias]['chemical_formula_formatted'] = preg_replace('/([0-9]+)/i', '<sub>$1</sub>', $unit[$model->alias]['chemical_formula']);
}
return $results;
}
}
Từ PHP 5.4 trở lên, bạn có thể sử dụng Trait cho việc này - chỉ cần đặt mã 'afterFind()' vào một tệp mới chứa khai báo đặc điểm (thay đổi tham chiếu '$ model' thành' $ this') và bao gồm nó ở đầu lớp Mô hình của bạn với câu lệnh 'use'. Bạn sẽ cần sử dụng 'App :: import()' hoặc 'require()' để tải tệp chứa đặc điểm của bạn ở đầu tệp Mô hình của bạn. – BeesonBison