mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-04 06:37:55 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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.
 | 
						|
     * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
 | 
						|
     */
 | 
						|
    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]));
 | 
						|
    }
 | 
						|
}
 |