2

これが私の検索機能です:

class Ads extends Controller
{
    public function search($format='velos', $cat='occasion', $location='france', $keyword, $page=1)
    {
        if($format == 'velos')
        {
            $query = '`private`=0';
        } else
        {
            $query = '`private`=1';
        }
    $this->images($query, $cat, $location,'MATCH(title) AGAINST ("'.db::escape($keyword).'" IN BOOLEAN MODE)', $page, '%s/%s/%s/'.$keyword.'/%d/', $row[0], $keyword);
    }
}

URL のキーワードを変更すると問題なく動作しますが、そのキーワードをページにエコーしたいのですが、方法がわかりません。私は試した

<?php echo $keyword; ?>

しかし、エコーは何も返しません。範囲の問題があるかもしれませんが、わかりません。

編集実際には $keyword は検索フィールドから来ていますが、別のクラスから来ているので、スコープの問題を考えていたのかもしれません

class UserModel extends Model
{
    public function search_form()
    {
    $form = new Form('search_form');

    $form->field('keyword', 'text', array
    (           
        'optional'      =>  true
    )); 
    if($data = $form->validate())
    {
        header('Location: '.WEB.sprintf($data['parts_search'].'/'.$data['category_search'].'/'.$data['location_search'].'/'.$data['keyword'].'/1/'));
    }
    return $form;
    }   
}   

解決 :

それは最良の解決策ではないかもしれませんが、実際に私が見つけた唯一のものです:

$url = 'http://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$parts = parse_url($url);
$path = $parts['path'];
$keys = explode('/', $path);
echo $keys[4]; // `corresponding to the 4th url word`
4

1 に答える 1

0

問題が何であるかを正確に理解するのに苦労していますが、提案されたソリューションに基づいて、提案したことを実行できる自動ロードされた CI クラスがあります。

http://codeigniter.com/user_guide/libraries/uri.html

したがって、 http: //yoursite.com/format/cat/location/yourKeywordの場合

$keyword = $this->uri->segment(4); // get the 4th segment of my CI URI
echo $keyword; // prints yourKeyword

お役に立てれば。

于 2012-05-16T16:56:34.283 に答える