TIP: Use Markdown or, <pre> for multi line code blocks / <code> for inline code.
These forums are read-only and for archival purposes only!
Please join our new forums at discourse.kohanaframework.org
  • Здравствуйте! Народ подскажите, как реализовать ЧПУ по аналогии OpenCart, или ссылку на подобные темы, т.к. решения я так и не нашел.

    ЧПУ как в OpenCart - т.е. ЧПУ хранится в БД, ссылки должны выглядеть:

    домен/чпу

  • а в чем проблема? в базе обычно slug храниться, а не вся ссылка. Делаем роут аля:

    Route::set('item', '((/))', array(
            'slug' => '[\w\-]+',
        ))
        ->defaults(array(
            'controller' => 'Page',
            'action'     => 'index',
        ));
    

    Ну и контроллер:

    // ...
    public function action_index()
    {
        if ($this->request->param('slug'))
        {
            // Select item by slug
            $item_model = ORM::factory('Page', array('slug' => $this->request->param['slug']));
            if ($model->loaded())
            {
                // Send item info in View
                $this->template->item = $item_model->as_array();
                // ...
                return TRUE;
            }
        }
        throw HTTP_Exception::factory(404, 'Item :url not found', array(
            ':url' => $this->request->url()));
    }
    // ..
    
  • оказывается я не правильно написал обработку в контроллере( спасибо за помощь!.

  • @WinterSilence не знаю почему всем так нравится писать длинный код внутри скобок условия, что в дальнейшем не очень удобно для анализа, не легче ли в условии написать короткую часть, например Exception?

          if ( ! $this->request->param('slug'))
          {
                throw HTTP_Exception::factory(404, 'Item :url not found', array(
                       ':url' => $this->request->url()));
          }
    
         // Else code ...
    

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

In this Discussion