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

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

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('*'),


			),


		);


	}

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

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

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

Такс… тогда я не понимаю…

htaccess сделал как у тебя… UserController во фронтенде висит.

loginurl - /login.html

авторизация тоже только залогиненые и нет…

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

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

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

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

Сорри, незнаю точно проскакивала ли в топике ссылка на cookbook по теме

http://www.yiiframew…oc/cookbook/33/

люди, помогите плз,

сделал все как у вас.

у меня не показывает в бакенде, что юзер залогинен (хотя он был залогинен во фронтэнде).

'allowAutoLogin' => true стоит и во фронтжнде и в бакэнде.

сессии после логина передаются в бакенд проверял так - print_r(Yii::app()->getSession()->keys);

но юзера фронтэнд пишет

Yii::app()->user->getName()  - залогиненого

а бакенд - что юзер гость…

как вы это победили ?

я с таким сталкивался, проверь - у тебя название приложений одинаковое?

потому что Yii генерить ключ сессии основываясь на названии приложения.

параметр name в конфиге бэкенда и фронтенда должен быть одинаковый :)

О Цифровой Бог !

спасибо заработало!

вот я только изучаю Yii , mvc и OOP , (много программировал структурно + pear + smarty )

вот я наверняка должен был сам догодаться, или дебагить фреймворк чтобы допереть, что имя проекта должно быть одинаковым  ???

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

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

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

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

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

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

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

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

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

Update


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