Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ZendFramework Хелп

2.0K
24 мая 2007 года
calgon
90 / / 27.06.2006
Есть такой код :
Код:
<?
Zend_Loader::loadClass('Zend_Controller_Action');
require_once 'Zend/Auth/Adapter/Interface.php';

class MyAuth implements Zend_Auth_Adapter_Interface {
    public function __construct($username, $password) {
       
    }
   
    public function authenticate() {
        return Zend_Auth_Result::SUCCESS;
    }
}

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        require_once "Zend/Auth.php";
        $auth = Zend_Auth::getInstance();
        $adapter = new MyAuth("admin","admin");
       
        $result = $auth->authenticate($adapter);
    }
 
    public function noRouteAction()
    {
        $this->_redirect('/');
    }
}
?>

На странице выползает такое :
Fatal error: Call to a member function isValid() on a non-object in D:\localserver\server\xampp\htdocs\zf\application\library\Zend\Auth.php on line 120

Что это может быть? :\
7.9K
24 мая 2007 года
vasa_c
191 / / 05.04.2007
Это может быть только одно &#8212; Call to a member function on a non-object

где line 120?
2.0K
24 мая 2007 года
calgon
90 / / 27.06.2006
Решил данную проблему так :
Код:
<?php
Zend_Loader::loadClass('Zend_Controller_Action');
require_once 'Zend/Auth/Adapter/Interface.php';

class MyAuth implements Zend_Auth_Adapter_Interface {
    private $user,$pass;
    public function __construct($username, $password) {
        $this->user=$username; $this->pass=$password;
    }
   
    public function authenticate() {
        $messages[] = 'Password incorrect';
        $code = $this->user=="admin"&&$this->pass=="admin" ? Zend_Auth_Result::SUCCESS : Zend_Auth_Result::FAILURE;
        return new Zend_Auth_Result($code,Zend_Auth_Result::getIdentity(),$messages);
    }
}

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        require_once "Zend/Auth.php";
        $auth = Zend_Auth::getInstance();
//      $adapter = new MyAuth("admin","addmin");   //FAILURE
        $adapter = new MyAuth("admin","admin");   //SUCCESS
       
        $result = $auth->authenticate($adapter);
       
        if (!$result->isValid()) {
            foreach ($result->getMessages() as $message)
                echo "$message\n";
        } else echo 'Authentication OK';
    }
 
    public function noRouteAction()
    {
        $this->_redirect('/');
    }
}
 
?>


Проблема была в том, что я возвращал константу Zend_Auth_Result::SUCCESS, а нужно было возвратить объект Zend_Auth_Result.
2.0K
24 мая 2007 года
calgon
90 / / 27.06.2006
Люди кто-нить пытался реализовать Digest-аутентификацию в ZF?
Прочитал мануал http://framework.zend.com/manual/ru/zend.auth.adapter.http.html но че-т не пашет :(
Поделитесь исходником плз.
15
24 мая 2007 года
shaelf
2.7K / / 04.05.2005
Опиши проблему конкретней. Что именно не работает?
2.0K
24 мая 2007 года
calgon
90 / / 27.06.2006
Цитата: shaelf
Опиши проблему конкретней. Что именно не работает?



в том то и дело что ващще не работает :)
лучше покажи исходник аутентификации которая работает.

ЗЫ Просто я не понял что делать с переменными $response и $request. что в них ложить и вообще принцип построение этой аутентификации.

Вот мой код:

Код:
public function digestAction() {
$config = array(
    'accept_schemes' => 'digest',
    'realm'          => 'My Web Site',
    'digest_domains' => '/zf/index/digest',
    'nonce_timeout'  => 3600,
);
require_once 'Zend/Auth/Adapter/Http.php';
$adapter = new Zend_Auth_Adapter_Http($config);

require_once 'Zend/Auth/Adapter/Http/Resolver/File.php';
$digestResolver = new Zend_Auth_Adapter_Http_Resolver_File();
$digestResolver->setFile('realm');

$adapter->setDigestResolver($digestResolver);

assert($request instanceof Zend_Controller_Request_Http);
assert($response instanceof Zend_Controller_Response_Http);

$adapter->setRequest($request);
$adapter->setResponse($response);

$result = $adapter->authenticate();
if (!$result->isValid()) {
    echo "baaad";
}
    }

Вылазят такие ошибки :
Warning: assert() [function.assert]: Assertion failed in D:\localserver\server\xampp\htdocs\zf\application\controllers\IndexController.php on line 71

Warning: assert() [function.assert]: Assertion failed in D:\localserver\server\xampp\htdocs\zf\application\controllers\IndexController.php on line 72

Fatal error: Argument 1 passed to Zend_Auth_Adapter_Http::setRequest() must not be null, called in D:\localserver\server\xampp\htdocs\zf\application\controllers\IndexController.php on line 74 and defined in D:\localserver\server\xampp\htdocs\zf\application\library\Zend\Auth\Adapter\Http.php on line 311

Что нужно ложить/принимать в переменные $response и $request?
15
24 мая 2007 года
shaelf
2.7K / / 04.05.2005
Responce отвечает за отдачу инфу клиенту, request - приём ($_GET[''] и т.д.). Вообще то полезно полностью ман почитать. Там респонс и реквест очень подробно раписан. И откуда у тебя берутся 2 переменные $responce, $request?
2.0K
24 мая 2007 года
calgon
90 / / 27.06.2006
Цитата: shaelf
И откуда у тебя берутся 2 переменные $responce, $request?


ман прочти до конца там они используются.

15
24 мая 2007 года
shaelf
2.7K / / 04.05.2005
Лол, ещё один любитель копи паста. Ты код просто копируешь? Может сначало попытаешься понять, а? Ты в асерте сравниваешь непроинициализированные переменные и к тому же они должны быть экземпляроми объектов. Повторюсь, в этих манах тупой копи/паст непроходит (и это хорошо), так как думать заставляет)))).
2.0K
24 мая 2007 года
calgon
90 / / 27.06.2006
 
Код:
$adapter->setDigestResolver($digestResolver);

$request = new Zend_Controller_Request_Http();          //+++
$response = new Zend_Controller_Response_Http();      //+++

assert($request instanceof Zend_Controller_Request_Http);
assert($response instanceof Zend_Controller_Response_Http);


если вставить эти строки (+++), то тож не пашет. :(
в мане тож по этому поводу ниче не сказано.
2.0K
25 мая 2007 года
calgon
90 / / 27.06.2006
пипец! это не ман а ужос какой-то! и кто его только составлял? объясняют моменты которые и так ясны, а как узкие места разруливать - не выложили (наверное сами не знают :D).
перелапатил все сорцы классов Zend'a епт! чуть с ума не сошел!
Но код все-таки добил :
Код:
public function digestAction() {
require_once "Zend/Auth.php";
$config = array(
    'accept_schemes' => 'digest',
    'realm'          => 'My Web Site',
    'digest_domains' => '/zf/index/digest',
    'nonce_timeout'  => 3600,
);
require_once 'Zend/Auth/Adapter/Http.php';
$adapter = new Zend_Auth_Adapter_Http($config);

require_once 'Zend/Auth/Adapter/Http/Resolver/File.php';
$digestResolver = new Zend_Auth_Adapter_Http_Resolver_File();
$digestResolver->setFile('realm');

$adapter->setDigestResolver($digestResolver);

$adapter->setRequest(Zend_Controller_Front::getInstance()->getRequest());
$adapter->setResponse($this->getResponse());

$result = Zend_Auth::getInstance()->authenticate($adapter);
if (!$result->isValid()) {
    echo "baaad";
}
}


ЗЫ Походу здесь никто в зенде и не чехлит, т.к. хелпа никакого не поступает. мда... :(
15
25 мая 2007 года
shaelf
2.7K / / 04.05.2005
Тебе же сказали, читай ман. Судя по всему тебе довольно смутно (если знакома вообще) архитектура MVC, т.к. такие понятия как responce и request там являются нормальными. Если бы ты начал читать ман сначало, то таких вопросов бы не возникло, а по поводу знает... Ну как тебе сказать, месяцев 10 я с ним воэусь, вторую версию CMS на его основе делая (вернее первую с его использованием). Для тех кто работает с данным фреймворком твой вопрос звучал как "а как получить GET" или что-то похожее. В таких случаях всегда ман отправляют читать, что я и сделал. Это первое. Второе, выбирай выражение и уважай участников форума.
2.0K
25 мая 2007 года
calgon
90 / / 27.06.2006
Цитата: shaelf
Тебе же сказали, читай ман. Судя по всему тебе довольно смутно (если знакома вообще) архитектура MVC, т.к. такие понятия как responce и request там являются нормальными. Если бы ты начал читать ман сначало, то таких вопросов бы не возникло, а по поводу знает... Ну как тебе сказать, месяцев 10 я с ним воэусь, вторую версию CMS на его основе делая (вернее первую с его использованием). Для тех кто работает с данным фреймворком твой вопрос звучал как "а как получить GET" или что-то похожее. В таких случаях всегда ман отправляют читать, что я и сделал. Это первое. Второе, выбирай выражение и уважай участников форума.



1. смысл тогда форума если в нем не хотят давать ответов?
2. если ты считаешь, что я задал настолько простой вопрос, то почему не видно ни одного дельного ответа? я тоже могу послать кого угодно в ман.
3. если тебе данный материал знаком так почему не поделиться опытом с другими?

... а ну да! я забыл! мне ж надо идти читать ман! :D :D :D

ЗЫ надеюсь ты понимаешь, что пошел откровенный оффтоп и выяснять кто знает а кто нет - глупо. по-моему лучше вообще не отвечать, чем методично посылать в ман - и это уже с твоей стороны неуважение :\

8
25 мая 2007 года
mfender
3.5K / / 15.06.2005
[COLOR=#0000bb]assert[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$request instanceof Zend_Controller_Request_Http[/COLOR][COLOR=#007700]); [/COLOR]- это как?
Тип аргумента указывается ПЕРЕД аргументом:

[COLOR=#0000bb]assert[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]instanceof Zend_Controller_Request_Http $request[/COLOR][COLOR=#007700]);[/COLOR]
[COLOR=#007700][/COLOR]
А на самом деле, можно и просто assert($request);
15
25 мая 2007 года
shaelf
2.7K / / 04.05.2005
2calgon Время между последним (с уточнением) вопросом и ответом самому себе (да ещё и с наездами в адрес посетителей форума) - 1 час. Или ты считаешь, что народу занятся больше не чем, как следить за твоими вопросами?
>>если тебе данный материал знаком так почему не поделиться опытом с другими?
А ты считаешь уважением с твоей стороны просить переписать тебе тут то, что и так чёрным по белому написано в мане?
2.0K
25 мая 2007 года
calgon
90 / / 27.06.2006
Цитата: shaelf
2calgon Время между последним (с уточнением) вопросом и ответом самому себе (да ещё и с наездами в адрес посетителей форума) - 1 час. Или ты считаешь, что народу занятся больше не чем, как следить за твоими вопросами?
>>если тебе данный материал знаком так почему не поделиться опытом с другими?
А ты считаешь уважением с твоей стороны просить переписать тебе тут то, что и так чёрным по белому написано в мане?



мда... оффтоп по ходу рулит! :D

2.0K
25 мая 2007 года
calgon
90 / / 27.06.2006
Цитата: mfender
[COLOR=#0000bb]assert[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$request instanceof Zend_Controller_Request_Http[/COLOR][COLOR=#007700]); [/COLOR]- это как?


это оператор проверки принадлежности к классу. Его синтаксис :
$thing instanceof SomeClass

Цитата: mfender

А на самом деле, можно и просто assert($request);



мы утверждаем, что $request и $response являются экземплярами классов Zend_Controller_Request_Http и Zend_Controller_Response_Http соответственно. думаю это используется в целях отладки.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог