You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							74 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							74 lines
						
					
					
						
							1.6 KiB
						
					
					
				<?php | 
						|
/** | 
						|
 * @link http://www.yiiframework.com/ | 
						|
 * @copyright Copyright (c) 2008 Yii Software LLC | 
						|
 * @license http://www.yiiframework.com/license/ | 
						|
 */ | 
						|
 | 
						|
namespace yii\widgets; | 
						|
 | 
						|
use Yii; | 
						|
use yii\base\InvalidConfigException; | 
						|
use yii\base\Widget; | 
						|
use yii\data\Sort; | 
						|
use yii\helpers\Html; | 
						|
 | 
						|
/** | 
						|
 * LinkSorter renders a list of sort links for the given sort definition. | 
						|
 * | 
						|
 * LinkSorter will generate a hyperlink for every attribute declared in [[sort]]. | 
						|
 * | 
						|
 * @author Qiang Xue <qiang.xue@gmail.com> | 
						|
 * @since 2.0 | 
						|
 */ | 
						|
class LinkSorter extends Widget | 
						|
{ | 
						|
	/** | 
						|
	 * @var Sort the sort definition | 
						|
	 */ | 
						|
	public $sort; | 
						|
	/** | 
						|
	 * @var array list of the attributes that support sorting. If not set, it will be determined | 
						|
	 * using [[Sort::attributes]]. | 
						|
	 */ | 
						|
	public $attributes; | 
						|
	/** | 
						|
	 * @var array HTML attributes for the sorter container tag. | 
						|
	 * See [[yii\helpers\Html::ul()]] for special attributes. | 
						|
	 */ | 
						|
	public $options = ['class' => 'sorter']; | 
						|
 | 
						|
 | 
						|
	/** | 
						|
	 * Initializes the sorter. | 
						|
	 */ | 
						|
	public function init() | 
						|
	{ | 
						|
		if ($this->sort === null) { | 
						|
			throw new InvalidConfigException('The "sort" property must be set.'); | 
						|
		} | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * Executes the widget. | 
						|
	 * This method renders the sort links. | 
						|
	 */ | 
						|
	public function run() | 
						|
	{ | 
						|
		echo $this->renderSortLinks(); | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * Renders the sort links. | 
						|
	 * @return string the rendering result | 
						|
	 */ | 
						|
	protected function renderSortLinks() | 
						|
	{ | 
						|
		$attributes = empty($this->attributes) ? array_keys($this->sort->attributes) : $this->attributes; | 
						|
		$links = []; | 
						|
		foreach ($attributes as $name) { | 
						|
			$links[] = $this->sort->link($name); | 
						|
		} | 
						|
		return Html::ul($links, array_merge($this->options, ['encode' => false])); | 
						|
	} | 
						|
}
 | 
						|
 |