05.25
php
saved
tclineks
Note
displayFields trick
displayFields trick
- <?php
- /**
- * Multiple displayField trick.
- * Allows population of displayField with multiple fields and a pattern.
- */
- class MultipleDisplayFieldsBehavior extends ModelBehavior {
- 'pattern' => '%s %s'
- ), $config);
- $this->settings[$model->name] = $settings;
- }
- /**
- *
- */
- function afterFind(&$model, $results) {
- // if displayFields is set, attempt to populate
- foreach ($results as $key => $val) {
- // ensure all fields are present
- $fields_present = true;
- foreach ($this->settings[$model->name]['fields'] as $field) {
- $fields_present = $fields_present && true;
- $displayFieldValues[] = $val[$model->name][$field]; // capture field values
- } else {
- $fields_present = false;
- break;
- }
- }
- // if all fields are present then set displayField based on $displayFieldValues and displayFieldPattern
- if ($fields_present) {
- }
- }
- }
- return $results;
- }
- /**
- * Support for virtual $displayField
- * @see http://groups.google.com/group/cake-php/browse_thread/thread/d4aa1929ce4d61c7/edcacb9354ff1f7a
- */
- function beforeFind(&$model, &$queryData) {
- //NOTE: This function required when setting $displayField to a
- // virtual field that doesn't exist, to prevent from causing
- // empty results.
- $fields = $queryData['fields'];
- } else {
- if ($queryData['fields'] != null) {
- } else {
- }
- }
- }
- // Now to check for non-existant fields that might cause problems.
- if ($count >= 1 && $fields[0] != '*') {
- foreach ($fields as $field) {
- $queryData['fields'] = '*';
- break;
- }
- }
- }
- return true;
- }
- }
- ?>
- // for some reason (possibly by design) behaviors aren't invoked for non-primary models, adding this to AppModel will invoke afterFind in this behavior
- function afterFind($results, $primary = false) {
- if (!$primary) {
- foreach($this->behaviors as $behaviorClass => $behavior) {
- $results = $behavior->afterFind(&$this, $results, $primary);
- }
- }
- }
- return $results;
- }
Parsed in 0.106 seconds, using GeSHi 1.0.7.14