Добрый день! Может кто сталкивался с такой трудностью: надо через сессию передать объект (если это важно, то из одного компонента, моего, в стандартный com_user).
У себя в компоненте делаю
//на всякий случай положил ужо класс в общее место includes, до этого лежал у меня в компоненте
JLoader::register('Salary', JPATH_SITE.DS.'includes'.DS.'classes'.DS.'salary.php');
require_once(JPATH_SITE.DS.'includes'.DS.'classes'.DS.'salary.php'); //здесь определение моего класса Salary
............................
$form = new Salary();
$form->set('infotype', JRequest::getVar( 'infotype'));
............................
$session =& JFactory::getSession();
//Комментарий 1
//$session->restart();
$session->set('salary', $form, md5('zp'));
//Комментарий 2
//$salary =& $session->get('salary', null, md5('zp'));
//$infotype =& $salary->get('infotype');
//echo "You enrer: ".$infotype;
$mainframe->redirect( 'index.php?option=com_user&view=login' );
Так вот если раскоментировать, для проверки, Комментарий 2 и закоментировать редирект в последней строке, то все работает и вижу то что надо(откатываем проверку). Поехали дальше. В components\com_user\views\login\view.html.php вставляю свой код
require_once(JPATH_SITE.DS.'includes'.DS.'classes'.DS.'salary.php');
$session =& JFactory::getSession();
//Комментарий 3
//$session->restart();
//$session->fork();
$salary =& $session->get('salary', null, md5('zp'));
$infotype =& $salary->get('infotype');
..............................
Так вот в таком вот виде ловлю на последней строке ($infotype =& $salary->get('infotype')
java.lang.RuntimeException: PHP Fatal error: UserViewLogin::display() [<a href='function.UserViewLogin-display'>function.UserViewLogin-display</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Salary" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\env\apache-tomcat-6.0.16\webapps\test-joomla\components\com_user\views\login\view.html.php on line 125
php.java.servlet.fastcgi.FastCGIServlet$CGIRunner.parseBody(FastCGIServlet.java:473)
php.java.servlet.fastcgi.FastCGIServlet$CGIRunner.doExecute(FastCGIServlet.java:368)
php.java.servlet.fastcgi.FastCGIServlet$CGIRunner.execute(FastCGIServlet.java:376)
php.java.servlet.CGIServlet.handle(CGIServlet.java:400)
php.java.servlet.PhpCGIServlet.handle(PhpCGIServlet.java:355)
php.java.servlet.CGIServlet.doGet(CGIServlet.java:469)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
есть варианты - если на основании
http://www.webdeveloper.com/forum/showthread.php?t=141112&highlight=object+sessionесли раскоментировать коментарий один, дабы обеспечить старт сессии после определения класса, получаю в той же строке ($infotype =& $salary->get('infotype')
- при обращении у объекту
javax.servlet.ServletException: java.lang.RuntimeException: PHP Fatal error: Call to a member function get() on a non-object in C:\env\apache-tomcat-6.0.16\webapps\test-joomla\components\com_user\views\login\view.html.php on line 125
php.java.servlet.PhpCGIServlet.handle(PhpCGIServlet.java:389)
php.java.servlet.CGIServlet.doGet(CGIServlet.java:469)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
и здесь уже без вариантов :-(