MINI
C:
/
php5.2.9
/
PEAR
/
symfony
/
lib
/
plugins
/
sfPropelPlugin
/
lib
/
widget
/
Upload File:
files >> C:/php5.2.9/PEAR/symfony/lib/plugins/sfPropelPlugin/lib/widget/sfWidgetFormPropelSelect.class.php
<?php /* * This file is part of the symfony package. * (c) Fabien Potencier <fabien.potencier@symfony-project.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * sfWidgetFormPropelSelect represents a select HTML tag for a model. * * @package symfony * @subpackage widget * @author Fabien Potencier <fabien.potencier@symfony-project.com> * @version SVN: $Id: sfWidgetFormPropelSelect.class.php 12803 2008-11-09 07:26:18Z fabien $ */ class sfWidgetFormPropelSelect extends sfWidgetFormSelect { /** * @see sfWidget */ public function __construct($options = array(), $attributes = array()) { $options['choices'] = new sfCallable(array($this, 'getChoices')); parent::__construct($options, $attributes); } /** * Constructor. * * Available options: * * * model: The model class (required) * * add_empty: Whether to add a first empty value or not (false by default) * If the option is not a Boolean, the value will be used as the text value * * method: The method to use to display object values (__toString by default) * * key_method: The method to use to display the object keys (getPrimaryKey by default) * * order_by: An array composed of two fields: * * The column to order by the results (must be in the PhpName format) * * asc or desc * * criteria: A criteria to use when retrieving objects * * connection: The Propel connection to use (null by default) * * multiple: true if the select tag must allow multiple selections * * peer_method: The peer method to use to fetch objects * * @see sfWidgetFormSelect */ protected function configure($options = array(), $attributes = array()) { $this->addRequiredOption('model'); $this->addOption('add_empty', false); $this->addOption('method', '__toString'); $this->addOption('key_method', 'getPrimaryKey'); $this->addOption('order_by', null); $this->addOption('criteria', null); $this->addOption('connection', null); $this->addOption('multiple', false); $this->addOption('peer_method', 'doSelect'); parent::configure($options, $attributes); } /** * Returns the choices associated to the model. * * @return array An array of choices */ public function getChoices() { $choices = array(); if (false !== $this->getOption('add_empty')) { $choices[''] = true === $this->getOption('add_empty') ? '' : $this->getOption('add_empty'); } $class = constant($this->getOption('model').'::PEER'); $criteria = is_null($this->getOption('criteria')) ? new Criteria() : clone $this->getOption('criteria'); if ($order = $this->getOption('order_by')) { $method = sprintf('add%sOrderByColumn', 0 === strpos(strtoupper($order[1]), 'ASC') ? 'Ascending' : 'Descending'); $criteria->$method(call_user_func(array($class, 'translateFieldName'), $order[0], BasePeer::TYPE_PHPNAME, BasePeer::TYPE_COLNAME)); } $objects = call_user_func(array($class, $this->getOption('peer_method')), $criteria, $this->getOption('connection')); $methodKey = $this->getOption('key_method'); if (!method_exists($this->getOption('model'), $methodKey)) { throw new RuntimeException(sprintf('Class "%s" must implement a "%s" method to be rendered in a "%s" widget', $this->getOption('model'), $methodKey, __CLASS__)); } $methodValue = $this->getOption('method'); if (!method_exists($this->getOption('model'), $methodValue)) { throw new RuntimeException(sprintf('Class "%s" must implement a "%s" method to be rendered in a "%s" widget', $this->getOption('model'), $methodValue, __CLASS__)); } foreach ($objects as $object) { $choices[$object->$methodKey()] = $object->$methodValue(); } return $choices; } }
Copyright ©2021 || Defacer Indonesia