Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 23 сен 2018, 23:52

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Вывод статей по ид
СообщениеДобавлено: 07 апр 2012, 01:53 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Практический урок в котором идет доработка блога, а конкретнее вывод конкретной статьи по ее идентификатору, который передается при нажатии на ссылку Подробнее на главной странице.
Ссылка на урок: http://kohanaframework.su/database/article_output

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод статей по ид
СообщениеДобавлено: 16 окт 2012, 12:57 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
доброго времени суток.
поборола урок с выводом информации по ид. Ну, почти. Все сделано, только при переходе по кнопке "подробно" вылетает ошибка

HTTP_Exception_404 [ 404 ]: The requested URL editcustomer/1-Глебова Наталья Степановна was not found on this server.

Совсем запуталась. Помогите разобраться, где ошиблась.

роут.
Код:
Route::set('default', '<edcustomer>/<id>-<fio>', array('id' => '[0-9]+'), array('fio' => '.+'))
   ->defaults(array(
      'controller' => 'customer',
      'action'     => 'editcustomer',      
   ));


модель
Код:
      public function get_edcus($customer_id = '')
    {
        $sql2 = "SELECT fio FROM ". $this->_tableCustomer ." WHERE `customer_id` = :customer_id";
 
        $query2 = DB::query(Database::SELECT, $sql2, FALSE)
                         ->param(':customer_id', (int)$customer_id)
                         ->execute();
 
        $result2 = $query2->as_array();
 
        if($result2)
            return $result2[0];
        else
            return FALSE;
    }


контроллер
Код:
 public function action_editcustomer()
   {
   $customer_id = $this->request->param('id');   
   
   $content = View::factory('edcustomerview')
                    ->bind('edcustomers', $edcustomers);
       
        $edcustomers = Model::factory('Customer')->get_edcus($customer_id);
       
        $this->template->content = $content;
   
   }


ссылка кнопки "подробно"
Код:
<a href="<?php echo URL::site('editcustomer/'. $customer['customer_id'] .'-'. $customer['fio']); ?>">Подробно</a>


вид
Код:
     <?php if($edcustomers): ?>
    <form action="" method="post">
<table class="newcus">
      <tr>
         <td align="right">
      ФИО:                <input name="fio" type="text" style="width:450px"
                                                value="<?php echo $edcustomers['fio']; ?>"><br>
         </td>
      </tr>
      <tr>
         <td align="right">
                Адрес:             <input name="adres" type="text" style="width:450px"
                                                   value="<?php echo $edcustomers['adres']; ?>">
         </td>
      </tr>
      <tr>
         <td align="right">
      Телефон(ы):        <input name="tels" type="text" style="width:450px"
                                                    value="<?php echo $edcustomers['tels']; ?>">
         </td>
      </tr>
      <tr>
         <td align="right">
      Доп. информация:   <input name="info" type="text" style="width:450px"
                                                    value="<?php echo $edcustomers['info']; ?>">
         </td>
      </tr>
      <tr>
         <td align="right">      
        <input name="butcus" type="submit" value="Отправить" style="width:150px" height="50px"> <br>
         </td>
      </tr>
</table>
    </form>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод статей по ид
СообщениеДобавлено: 16 окт 2012, 13:54 
Не в сети
Бывалый

Зарегистрирован: 29 авг 2012, 16:09
Сообщения: 46
Отжигаете вот на этом моменте :D

Код:
Route::set('default', '<edcustomer>/<id>-<fio>', array('id' => '[0-9]+'), array('fio' => '.+'))
   ->defaults(array(
      'controller' => 'customer',
      'action'     => 'editcustomer',     
   ));


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод статей по ид
СообщениеДобавлено: 16 окт 2012, 14:42 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
я такая,я могу. прошу прощения за дурость.
вот один из где я ппц запуталась. в уроке все понятно, все ямно,а начинаешь на себе пробывать - фиг


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод статей по ид
СообщениеДобавлено: 16 окт 2012, 15:12 
Не в сети
Бывалый

Зарегистрирован: 29 авг 2012, 16:09
Сообщения: 46
Все же просто.

Если ссылка такая "editcustomer/1-Глебова Наталья Степановна", то.....

editcustomer - action, 1 - id, "Глебова Наталья Степановна" - fio , customer - controller тогда пишем роут

все что в роуте в <> - это получить в контроллере так $this->request->param('тут то что между <>', 0);
все что в () - это необязательные параметры роута.

Код:
Route::set('default_customer', 'editcustomer/<id>(-<fio>)', array('id' => '[0-9]+' , 'fio' => '.+'))
   ->defaults(array(
      'controller' => 'customer',
      'action'     => 'editcustomer',     
      'id'           => '1',
      'fio'          => 'Глебова Наталья Степановна',
   ));


тут прописали что fio необязательно. Указали дефолтные значения, и значения, которые должны быть в id и fio


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод статей по ид
СообщениеДобавлено: 16 окт 2012, 15:15 
Не в сети
Бывалый

Зарегистрирован: 29 авг 2012, 16:09
Сообщения: 46
А вообще, прочитайте уроки по роутам еще раз и внимательно, можно даже несколько раз прочитать :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод статей по ид
СообщениеДобавлено: 16 окт 2012, 16:38 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
хм, а это зачем?
Код:
      'id'           => '1',
      'fio'          => 'Глебова Наталья Степановна',

это мне контроллер скажет какой ид выводить.

роут поправила, ошибка не ушла(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод статей по ид
СообщениеДобавлено: 17 окт 2012, 00:31 
Не в сети
Бывалый

Зарегистрирован: 29 сен 2012, 00:30
Сообщения: 65
Откуда: Рига, Латвия
Проверьте, чтобы не было роутов с одиноковым названием.
prickle писал(а):
Код:
Route::set('default', '<edcustomer>/<id>-<fio>', array('id' => '[0-9]+'), array('fio' => '.+'))
   ->defaults(array(
      'controller' => 'customer',
      'action'     => 'editcustomer',      
   ));

Я практически на 100% уверен, что у вас уже есть где-то роут с
Код:
Route::set('default', bla-bla-bla

именем default.

P.S. никогда не понимал: зачем добавлять название статьи или фио в роут? От этого ссылка только длиннее, уродливее, сложнее и т.п. Тем более, что этот фио потом вобще НИКАК не обрабатывается...

P.P.S.
Зачем вам в первом варианте роута вокруг
Код:
<edcustomer>
знаки больше меньше? либо между ними писать action либо просто их убрать, вам ведь нужно точное совпадение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод статей по ид
СообщениеДобавлено: 17 окт 2012, 08:15 
Не в сети
Бывалый

Зарегистрирован: 29 авг 2012, 16:09
Сообщения: 46
Zorato писал(а):

P.S. никогда не понимал: зачем добавлять название статьи или фио в роут? От этого ссылка только длиннее, уродливее, сложнее и т.п. Тем более, что этот фио потом вобще НИКАК не обрабатывается...



Допустим, SEO? У меня в статьях, каталоге, страницах так же почти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод статей по ид
СообщениеДобавлено: 17 окт 2012, 08:19 
Не в сети
Бывалый

Зарегистрирован: 29 авг 2012, 16:09
Сообщения: 46
prickle писал(а):
хм, а это зачем?
Код:
      'id'           => '1',
      'fio'          => 'Глебова Наталья Степановна',

это мне контроллер скажет какой ид выводить.

роут поправила, ошибка не ушла(


Ну дефолтные значения думаю не лишним будет прописать.

"Роут поправила" или "роут отсюда скопировала и вставила"?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group