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

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 мар 2024, 17:45

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Запрос внутри запроса
СообщениеДобавлено: 12 фев 2012, 22:10 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Использование HMVC в Кохане.

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


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

Зарегистрирован: 13 фев 2012, 02:44
Сообщения: 32
Кто-то писал в комментах и я видел на официальном сайте, что можно действительно передавать параметры через объект Request. Пробовал, приходит какой-то бред. Т.е. не чистый пост массив, а что-то непонятное.
Вот так написано в мануале:
Код:
// This uses GET
$request = Request::factory('http://www.google.com/');

// This uses PUT
$request = Request::factory('http://example.com/put_api')->method(Request::PUT)->body(json_encode('the body'))->headers('Content-Type', 'application/json');

// This uses POST
$request = Request::factory('http://example.com/post_api')->method(Request::POST)->post(array('foo' => 'bar', 'bar' => 'baz'));


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

Зарегистрирован: 13 фев 2012, 02:44
Сообщения: 32
И в оф. доке про кеширование написано.
Код:
$request = Request::factory('welcome', Cache::instance());


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

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Честно говоря видел, но ни разу не пользовался. По идее это полезно в случае передачи большого количества параметров, но мне всегда хватало количества параметров, которые мы передаем через роут (как в случае с комментами - ид коммента).
Надо будет посмотреть, когда время будет. Сейчас много работы, к сожалению.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос внутри запроса
СообщениеДобавлено: 06 авг 2012, 15:50 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Вызов любого контролера с любым action:

Контролёр:
Код:
$attributes = array
(
  'controller' => 'mycontroller',
  'action'     => myaction,
  'myvar' => 'test'
);

echo Request::factory(Route::get('myroute')->uri($attributes))
  ->execute()
  ->send_headers()
  ->body();


Маршрутизация:
Код:
Route::set('myroute', 'mycontroller/<action>(/<myvar>)', array('action' => 'myaction1|myaction2|myaction3', 'myvar' => '.+'))
  ->defaults(array(
      'controller' => 'mycontroller'
  ));


Вызываемый контролер:
Код:
class Controller_Mycontroller extends Controller_Common {

// какой то код

public function action_myaction1()
{
  $this->template->message = $this->request->param('myvar');
  $page_view = '/pages/static';

  $content = View::factory($page_view)
    ->bind('message', $this->template->message);

  $this->template->content = $content;
}

// какой то код

}


Вид:
Код:
<h1><?php echo $message ?></h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>


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

Зарегистрирован: 11 апр 2013, 14:09
Сообщения: 162
Ребят, помогите разобраться с затыком по этому уроку. Сделал, так сказать все по инструкции. Уже раз 5 проверил каждый файл посимвольно, идентично коду в примерах один в один. Но вот запара, после модификации файлов по этому уроку, при переходе по любому адресу выдается ошибка Internal server error 500. Вот исходники:
конец файла bootstrap.php:
Код:
Route::set('admin', 'admin(/<controller>(/<action>(/<id>)))')
   ->defaults(array(
      'directory'  => 'admin',
      'controller' => 'main',
      'action'     => 'index',
   ));

Route::set('comments', 'comments/<id>', array('id' => '.+'))
   ->defaults(array(
      'controller' => 'comments',
      'action' => 'index';
   ));

Route::set('articles', '<articles>(/<id>)', array('id' => '.+'))
   ->defaults(array(
      'controller' => 'articles',
      'action' => 'index'
   ));
       
if ( ! Route::cache())
{
   Route::set('static', '<action>(/<id>)', array('action' => 'about|contacts'))
      ->defaults(array(
         'controller' => 'static',
      ));
   Route::cache(TRUE);
}

Route::set('default', '<controller>(/<action>(/<id>))')
   ->defaults(array(
      'controller' => 'page',
      'action'     => 'index',
   ));

Контроллер Articles.php:
Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Articles extends Controller_Common {
   
   public function action_index()
   {
      $id = $this->request->param('id');
      
      if($id)
      {
         $content = View::factory('/pages/article')
            ->set('article', $id)
            ->bind('comments', $comments);
            
         $comments_url = 'comments/' . $id;
         $comments = Request::factory($comments_url)->execute();
      }
      else
      {
         $content = View::factory('/pages/articles');
      }
         
      $this->template->content = $content;
   }
   
} //END OF Articles

Контроллер Comments.php:
Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Comments extends Controller {
   
   public function action_index()
   {
      $id = $this->request->param('id');
      
      $content = View::factory('/comments/show')
         ->bind('comments', $comments);
         
      switch($id)
      {
         case 'article1':
            $comments = array(
               array('name' => 'Вася', 'comment' => 'Привет, Петя'),
               array('name' => 'Петя', 'comment' => 'Привет, Вася!'),
            );
         break;
         
         case 'article2':
            $comments = array(
               array('name' => 'Гена', 'comment' => 'Привет, Мир!'),
            );
         break;
         
         default:
            $comments = array();
         break;
      }
      
      $this->response->body($content);
   }
   
} //END OF Comments

Файл Вида show.php:
Код:
<?php foreach($comments as $comment): ?>

   <strong>Имя пользователя:</strong><br />
   <?php echo $comment['name']; ?><br />
   <strong>Комментарий пользователя:</strong><br />
   <?php echo $comment['comment']; ?>
   <br /><hr /><br />
<?php endforeach; ?>

_________________
Они плакали и кололись, но продолжали есть кактус!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос внутри запроса
СообщениеДобавлено: 18 апр 2013, 20:52 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
nkl>
.htaccess как выглядит? скорее всего лишние\неправильные роуты, загрузите архив со своими файлами куда-нить вроде народ.ру, надо проверить, еще роут по умолчанию приведите в стандартный вид:
Код:
Route::set('default', '(<controller>(/<action>(/<id>)))')
    ->defaults(array(
        'controller' => 'home',
        'action'     => 'index',
    ));

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос внутри запроса
СообщениеДобавлено: 18 апр 2013, 21:13 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 11 апр 2013, 14:09
Сообщения: 162
.htaccess вроде в порядке, все по дефолту:
Код:
# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
   Order Deny,Allow
   Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

_________________
Они плакали и кололись, но продолжали есть кактус!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос внутри запроса
СообщениеДобавлено: 19 апр 2013, 14:32 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 11 апр 2013, 14:09
Сообщения: 162
Исправил ошибку переписав все роуты начиная с самого начала, таки вкралась ошибка туда, только я и не понял какая и куда именно :?

_________________
Они плакали и кололись, но продолжали есть кактус!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

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


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

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


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

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