Php 搜索引擎友好的网址与yii

Php 搜索引擎友好的网址与yii,php,yii,Php,Yii,我正在使用php和Yii框架来创建一个web应用程序,但是我对一些动态友好的URL很感兴趣。 我有以下场景:在我看来,我有一个带有下拉列表(用户可以在其中选择季节)和另外两个隐藏字段(eventID和playerName)的表单。当用户选择 一个赛季或点击右边的面板(事件或球员),我用所选的值将表单提交给服务器。 现在我想创建如下URL: 'stats(/<season:\w+>)?(/<eventId:\d+>)?(/<playerName:\w+>)?'

我正在使用php和Yii框架来创建一个web应用程序,但是我对一些动态友好的URL很感兴趣。 我有以下场景:在我看来,我有一个带有下拉列表(用户可以在其中选择季节)和另外两个隐藏字段(eventID和playerName)的表单。当用户选择 一个赛季或点击右边的面板(事件或球员),我用所选的值将表单提交给服务器。 现在我想创建如下URL:

'stats(/<season:\w+>)?(/<eventId:\d+>)?(/<playerName:\w+>)?' => 'statistics/index/',
www.domain.com/football/statistics/seash name/(eventID)?/(球员姓名)?/>在哪里(*)?0或1次 e、 g

这是我的视图(),view.php是:

<div id='main'>
 <div style="margin-left:50px;margin-top: 60px;width: 350px; border: 1px solid black; float:left;">
<?php $this->widget('zii.widgets.CBreadcrumbs', array(
    'homeLink' => CHtml::link('Home', Yii::app()->homeUrl),
    'links'=> $this->breadcrumbs));?><p>Season: <?php echo $selectedSeason;?> <br/>player:  <?php echo $selectedPlayer?> <br/>Id event: <?php echo $selectedEventId; ?></p>
    <?php echo CHtml::beginForm('', 'get', array('id' => 'filters_form', 'action' => $formURL));
        echo CHtml::dropDownList(
            'season',
            $selectedSeason,
            CHtml::listData($seasons, 'season_id', 'name'),
            array(
                'prompt' => 'Select a season',
                'onchange' =>"js:$('#filters_form').submit()"
            )
        );?>
    <input type="hidden" name="eventId" id="event_field" value="<?php echo $selectedEventId;?>" />
    <input type="hidden" name="playerName" id="player_field" value="<?php echo $selectedPlayer;?>" />
    <?php echo CHtml::endForm(); ?>
    <br/>
    <?php foreach ($matches as $match) { ?>
        <div class="match">
            <p><a href="<?php $this->createUrl('statistics/view', array('id' => $match->id, 'slug' => $match->match_date)); ?>">
            <?php echo $match->homeTeam->Name." <b>$match->home_goals - $match->away_goals</b> ".$match->awayTeam->Name; ?></a></p>
            <p><?php $match->match_date;?></p>
            <p><?php $match->match_type;?></p>
            <p><?php $match->home_goals;?></p>
            <p><?php $match->away_goals;?></p>
            <hr/>
        </div>
    <?php } ?>

</div>
<div id="vertical_filters" style="float:left;margin-top:60px;">
    <div class="filter_left" style="margin-left:20px;">
        <ul>
        <?php foreach ($events as $event) { ?>
                <li class="list-item">
                    <a class="event <?php if($selectedEventId == $event['id']) echo "selected";?>" href="<?php echo $event['id']; ?>"><?php echo $event['name']; ?></a>
                </li>
        <?php } ?>
        </ul>
    </div>
    <br/>
    <div class="filter_left" style="margin-left:20px;">
        <ul>
        <?php foreach ($players as $player) { ?>
                <li class="list-item">
                    <a class="player <?php if ($selectedPlayer == $player['id']) echo "selected"; ?>" href="<?php echo $player['id']; ?>"><?php echo $player['name'] . ' ' . $player['surname']; ?></a>
                </li>
        <?php } ?>        
        </ul>        
    </div>
</div>
<script>
    $(function() {
        console.log($('#filters_form').attr('action'));
        $('.event').click(function(e) {
            e.preventDefault();
            value = $(this).attr('href');
            $('#event_field').val(value);                
            $('#filters_form').submit();
        });

        $('.player').click(function(e) {
            e.preventDefault();
            value = ($(this).text() != 'All players')?$(this).text():'';
            $('#player_field').val(value);
            $('#filters_form').submit();
        });
    });
</script>

季节:
玩家:
Id事件:


我建议您编写自己的urlrule类


除了regExp路由之外,它将帮助确定DB中是否存在播放器名。此外,当复杂的url路由被隔离在单独的逻辑单元(类)中时,看起来非常清楚。您可以在“使用自定义URL规则类”部分了解更多信息。

我建议您编写自己的URL规则类

除了regExp路由之外,它将帮助确定DB中是否存在播放器名。此外,当复杂的url路由被隔离在单独的逻辑单元(类)中时,看起来非常清楚。您可以在“使用自定义URL规则类”部分了解更多信息。

您可以在“使用自定义URL规则类”部分了解更多信息。

您可以在“使用自定义URL规则类”部分了解更多信息

'stats(/<season:\w+>)?(/<eventId:\d+>)?(/<playerName:\w+>)?' => 'statistics/index/',