Yii Framework Forum: несколько приложений в одном проекте - Yii Framework Forum

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

несколько приложений в одном проекте Rate Topic: -----

#21 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 18 May 2009 - 08:03 AM

Только что сделал вторую точку входа в своем проекте. Проект интенсивно использует УРЛ менеджер, настолько интенсивно, что я создал хтаксес файл как в мануале, только модифицировал его когда добавил вторую точку входа:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule admin.* backend.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

То есть все запросы вида /admin* обрабатывает файл backend.php
Отдельный конфиг был создан посредствоим копировния основного и добавления нужных урлов:

'urlManager'=>array(
'urlFormat' => 'path',
'urlSuffix' => '.html',
'showScriptName' => false,
'rules' => array(
................................................................................
'/admin' => 'admin/index',
),
),

В обоих конфигах стоит:

'user'=>array(
'allowAutoLogin' => true,
'loginUrl' => '/user/login'
),

В UserController::actionLogin:
public function actionLogin()
{
$form=new LoginForm;
// collect user input data
if(isset($_POST['LoginForm']))
{
$form->attributes=$_POST['LoginForm'];
// validate user input and redirect to previous page if valid
if($form->validate())
$this->redirect(Yii::app()->user->returnUrl);
}
// display the login form
$this->render('login',array('form'=>$form));
}

Тестируем так:
1) обращаемся к чему-то. что требует логина в фронтенде, редиректимся на стираницу логина, псоле успешного логина нас перебрасывает куда надо
2) Производин аналогичные действия для пути /admin.html - редиректимся в итоге в админку.

Все красиво, все работает.

Quote

В конфиге бэкенда прописал 'loginUrl'=>'login.html', потом в конфиге фронтенда тоже самое прописал и создал правило 'login'=>'site/login'



открываю localhost/login.html - urlReferrer пустой, returlUrl равен index.php

Ну и правильно, первая страница, которую ты открыл - это ж логин, так что редиректить тебя некуда :)

Quote

открываю localhost/backend.php - перебрасывает на localhost/login.html -

Опять все правильно

Quote

значения переменных теже...

А вот это ооочень странно :)

Я добился редиректа с админки на логин вот так:
public function accessRules()
{
return array(
array('allow',  // allow admins to perform the following actions
'actions'=>array('index'),
'users'=>array('@'),
),
array('deny',  // deny everything that was not allowed
'users'=>array('*'),
),
);
}

У меня просто в приложении пока что групп пользователей нет - только обычные и залогиненные.
0

#22 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 18 May 2009 - 08:21 AM

Так, сразу вопрос - UserController у тебя один или два? :)
0

#23 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 18 May 2009 - 08:29 AM

Один, только один. А нафиг мне два?
0

#24 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 18 May 2009 - 08:39 AM

Такс... тогда я не понимаю....
htaccess сделал как у тебя... UserController во фронтенде висит.
loginurl - /login.html
авторизация тоже только залогиненые и нет...

и при заходе на localhost/admin/members  (MembersController в правилах урлов прописано /admin/members => members/index)

перебрасывает на логин и все равно выдает Yii::app()->user->returnUrl = /index.php
0

#25 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 18 May 2009 - 09:18 AM

Все понял по чему такая фигня происходит.. только как побороть еще не знаю))


Все, победил в неравном бою :)
0

#26 User is offline   ppy 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 33
  • Joined: 21-May 09

Posted 25 May 2009 - 04:11 AM

Сорри, незнаю точно проскакивала ли в топике ссылка на cookbook по теме
http://www.yiiframew...oc/cookbook/33/
0

#27 User is offline   ppy 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 33
  • Joined: 21-May 09

Posted 26 May 2009 - 04:55 PM

люди, помогите плз,
сделал все как у вас.
у меня не показывает в бакенде, что юзер залогинен (хотя он был залогинен во фронтэнде).
'allowAutoLogin' => true стоит и во фронтжнде и в бакэнде.
сессии после логина передаются в бакенд проверял так - print_r(Yii::app()->getSession()->keys);
но юзера фронтэнд пишет
Yii::app()->user->getName()  - залогиненого
а бакенд - что юзер гость..
как вы это победили ?
0

#28 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 26 May 2009 - 11:51 PM

я с таким сталкивался, проверь - у тебя название приложений одинаковое?
потому что Yii генерить ключ сессии основываясь на названии приложения.
параметр name в конфиге бэкенда и фронтенда должен быть одинаковый :)
0

#29 User is offline   ppy 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 33
  • Joined: 21-May 09

Posted 27 May 2009 - 06:04 AM

О Цифровой Бог !
спасибо заработало!

вот я только изучаю Yii , mvc и OOP , (много программировал структурно + pear + smarty )
вот я наверняка должен был сам догодаться, или дебагить фреймворк чтобы допереть, что имя проекта должно быть одинаковым  ???
0

#30 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 27 May 2009 - 01:38 PM

Я это определил покопавшись в коде yii)) дебаг рулит :)
0

#31 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 30 May 2009 - 12:16 PM

Я даже не заметил, потому что просто скопировал конфиг фронтенда :)
0

#32 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 01 June 2009 - 05:45 AM

Все еще копаюсь с бэкендом и фронтендом и вот наткнулся на такую проблему (может я заработался, что мозги уже не варят):

Есть модель AR News ( class News extends CActiveRecord ). Дабы создать админский функционал создаю модель NewsAdmin в бэкенде и чтобы не дублировать выборки и правила делаю его как "class NewsAdmin extends News" (в бэкенде у меня подгружаются модели фронтенда)

Вопрос, какого черта не работает? :) ни одна функция в NewsAdmin не срабатывает. или может так просто нельзя сделать?
0

#33 User is offline   Zolter 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 377
  • Joined: 26-March 09

Posted 01 June 2009 - 09:01 AM

А на что ругается? Может класс News не видит?
0

#34 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 01 June 2009 - 12:09 PM

Вообще ни на что не ругается, а get_class выдает правильно.. то есть я как проверяю, в классе News создал функцию а в NewsAdmin

Далее просто сделал вызов обоих функций в контроллере, в обоих случиях выдается i'm here

поменял текст на функцию get_class($this); - выдает News и NewsAdmin, то есть то что классы разные оно понимает... Ошибок никаких нигде не выдает...

Update
---------
По непонятным мне причинам работает класс AdminNews (и файл соответственно AdminNews.php).. чувствую собака зарыта в вызове классов в yii
0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users