Kohana Экшны не подхватывают основной вид контроллера

  • Автор темы Автор темы Lobezki
  • Дата начала Дата начала

Lobezki

Новичок
Экшны не подхватывают основной вид контроллера. В контроллере прописаны 4 экшна. 2 экшна имеют отдельный вид, 2 экшна не имеют, а содержат строчку текста. Вид подхватывает только один экшн index.

Ниже прилагаю код контроллера:

PHP:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Auth extends Controller_Template {

   public $template = 'basic';

   public function action_index()
   {   
     $auth = Auth::instance();
     $data = array();
     
     if ($auth->logged_in())
     {
       Controller::redirect($uri ='');
     }
     else
     {
       if (isset ($_POST['btnsubmit']))
       {
         $login = Arr::get($_POST, 'login', '');
         $password = Arr::get($_POST, 'password', '');
         
         if ($auth->login($login, $password))
         {
           $session = Session::instance();
           $auth_redirect = $session->get('auth_redirect','');
           $session->delete('auth_redirect');
           
           HTTP::redirect ($auth_redirect);
         }
         else
         {
           $data["error"] = "";
         }
       }   
     }
     
     $this->template->content = View::factory('authview', $data);
   }
   
   public function action_reg()
   {
     $data = array();
     
     if (isset($_POST['btnsubmit']))
     {
       $email = Arr::get ($_POST, 'email', '');
       $regcodevalue = Arr::get ($_POST, 'regcodevalue', '');
       
       $register = new Model_Register();
       if($register->reg($email, $regcodevalue, 1))
       {
         $data["regok"] = "";
       }
       else
       {
         $data["errors"] = $register->errors;
       }
     }
       
     $this->template->content = View::factory('regview', $data);
   }
   
   public function action_hpass()
   {
     $auth = Auth::instance();
     $this->template->content = $auth->hash_password('admin');
   }
   
   public function action_logout()
   {
     $auth = Auth::instance();
     $auth->logout();
     $this->template->content = "Разлогинились";
   }
} // End Welcome
 
Последнее редактирование:
Научись, пожалуйста, пользоваться тегами [ php][/php ] для оформления кода. Читать эту кашу без отступов никому не интересно.
 
  • Like
Реакции: AmdY
@Lobezki и почему ты думаешь, что виноват контроллер, а не вьюха в которой криво прописаны пути к стилям?
 
флоппик, ок.
AmdY, потому что у меня есть базовая въюха в кот прописан путь и она работает. А в экшенах просто текст, напр экшн hpass вообще не имеет отдельной въюхи.
 
Lobezki, говорю же, криво прописано. проверь пути в исходном коде страницы.
 
Вот код базовго вида:
PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Библиотека</title>
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>

<body>
    <div id="container">
        <div id="header">
            <h1>Библиотека</h1>
        </div>
        <div id="content">
            <?php echo $content ?>
        </div>
        <div style="clear:both"></div>
        <div id="empty"></div>
    </div>
    <div id="footer">
        <hr>
        <p style="padding-top:5px">2014 &copy;...hnnrbc</p>
    </div>

</body>
</html>

Вот моя иерархия коханы:
Код:
kohana
      www
           application
                  views (здесь лежат виды)
           css (здесь лежит файл стиля)
      logs
Если в строке link href как-угодно менять путь, напр вместо css/style.css пишу /css/style.css или /style.css или / и в прочих других комбинациях, то стиль даже не подхватывает базовый шаблон. Интересно то, что в самом начале всё работало. Я пересмотрел уроки и я ничего нигде не клацнул/изменил что не надо в пути css, как это было изначально.
 
Последнее редактирование:
Почитал внимательно лог. Вроде решил проблему, скопировав style.css в апач/дата. Но кто-его знает, может еще где вылезет что не так.
 
Очевидно же.

href="css/style.css"

А надо href="/css/style.css"
 
Значит сайт у тебя располагается не в корне домена, а в каталоге. Что не айс.
Значит надо либо подставлять base_url кохановский. Либо переносить в корень :)
 
Adelf, согласен, но к сожалению место расположения сайта выбирал не я. И изменить никак не могу. Точнее не позволено. Т.к. это не первый сайт в корне домена.
 
Lobezki, в этом случае у тебя должен быть прописан base_url в bootstrap.php . Иначе будут неверно генериться ссылки.
И данный base_url доступен по Kohana::$base_url.

Соответсвенно:
PHP:
<link href="<?php echo Kohana::$base_url ?>css/style.css" rel="stylesheet" type="text/css">
 
Lobezki, в этом случае у тебя должен быть прописан base_url в bootstrap.php . Иначе будут неверно генериться ссылки.
И данный base_url доступен по Kohana::$base_url.

Соответсвенно:
PHP:
<link href="<?php echo Kohana::$base_url ?>css/style.css" rel="stylesheet" type="text/css">
Кмк, тут лучше <?=Url::site('css/style.css')?> чем дергать базовый урл из свойства. У меня вообще есть отдельный Url::media('') потому что Url::site() я обычно перекрываю для многоязычности
 
Ага. Для статики лучше отдельным методом делать. Проще будет перенести статику на отдельный домен, когда надумаешь.
 
Спасибо всем! Только вот мой сайт должен как-бы находиться в корне главного сайта. Ну напр. главный сайт на серваке http://mainsite.com. А мой сайт должен распологаться http://mainsite.com/kohana. и я делаю не совсем ч.б. сайт. Точнее автоматизированную библиотеку на web-интерфейсе внутри локальной сети. М.б. в будущем перенесут и на просторы всемирной сети. И вообще сайт в апаче прописан как эйлиэс.
 
Последнее редактирование:
Появилась новая проблема. Решил не засорять ваш форум и изменил название темы и содержание первого поста на актуальную проблему.
 
Надо писать save()
И никогда больше не делай так. Создавай новую тему. И если можно верни все назад.
 
Ага. И десяток комментов теперь тут не в тему.
 
Adelf, флоппик, прошу прощения. Хотел как лучше, а получилось как всегда. Спасибо еще раз за помощь в устранении траблы.
 
Сверху