首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Phalcon登录失败(getDI)

Phalcon登录失败(getDI)
EN

Stack Overflow用户
提问于 2018-06-23 02:05:36
回答 1查看 387关注 0票数 0

我在IIS上使用PHP,Phalcon框架。我有一个正在处理的登录控制器(是的,密码还没有加密,但那是以后的事了),但我似乎不能让它工作。

我有一个表单操作发布到signin/doSignin。这是SigninController.php的一个片段:

public function doSigninAction(){
    //$this->view->disable();
    $user = User::findFirst([
          'conditions' => 'email = :email: AND password = :password:'
        , 'bind' => [
              'email' => $this->request->getPost('email')
            , 'password' => $this->request->getPost('password')
        ]
    ]);
    if ($user){
        echo 1;
        return;
    }
    echo 2;

当我运行这段代码时,结果是一个空白页面,它只是报告:

Call to undefined method or service 'getDI'

对于phalcon的内部结构,有些东西没有正确排列,但是我不知道我需要检查什么。当我将上面的代码改为这样时,我得到了视图的正确呈现,并为用户打印了1:

    $user = new User()/*::findFirst([
          'conditions' => 'email = :email: AND password = :password:'
        , 'bind' => [
              'email' => $this->request->getPost('email')
            , 'password' => $this->request->getPost('password')
        ]
    ]);*/;
    if ($user){
        echo 1;
        return;
    }
    echo 2;

我的引导程序如下所示:

<?php
try {
set_include_path('c:/workspace/GIIAnalytics/app/views');

//Autoloader
$loader = new \Phalcon\Loader();
$loader->registerDirs([
      '../app/controllers/'
    , '../app/models/'
    , '../app/config/'
]);
/** For MSSQL connections */
$loader->registerNamespaces([
      "Twm\Db\Adapter\Pdo"  =>  "../app/library/db/adapter/"
    , "Twm\Db\Dialect"      =>  "../app/library/db/dialect/"
]);
$loader->register();

//Dependancy Injection
$di = new \Phalcon\DI\FactoryDefault();

//Config
$configFile = __DIR__ . '/../app/config/config.json';
$config = json_decode ( file_get_contents ( $configFile ) );
$di->setShared('config',$config);

//MSSQL Database connection
$di->set("db", function() use ($di) {
    //Database info
    /** For MSSQL connections */
    $mc = $di->getDI()->getShared('config')['db'];
    $db = new Twm\Db\Adapter\Pdo\Mssql($mc);
    return $db;
});

//View
$di->set('view', function(){
    $view = new \Phalcon\Mvc\View();
    $view->setViewsDir('../app/views');
    /*
    $view->registerEngines([
        '.volt' => '\Phalcon\Mvc\View\Engine\Volt'
    ]);
    */
    return $view;
});

// Router
$di->set('router',function(){
    $router = new \Phalcon\Mvc\Router();
    $router->mount(new Routes());
    return $router;
});

// Session
$di->setShared('session', function() {
    $session = new \Phalcon\Session\Adapter\Files();
    $session->start();
    return $session;
});

//Flash Data (temp data)
$di->set('flash', function() {
    $flash = new \Phalcon\Flash\Session([
          'error'   =>  'alert alert-danger'
        , 'success' =>  'alert alert-success'
        , 'notice'  =>  'alert alert-info'
        , 'warning' =>  'alert alert-warning'
    ]);
    return $flash;
});

//Metadata
$di['modelsMetadata'] = function() {
    $metaData = new \Phalcon\Mvc\Model\MetaData\Memory([
          'lifetime' => 86400
        , 'prefix' => 'metaData'
    ]);
    return $metaData;
};

// custom dispatcher overrides the default
$di->set('dispatcher', function() use ($di) {
    $eventsManager = $di->getShared('eventsManager');

    // Custom ACL class
    $permission = new Permission();

    // Listen for events from the $permission class
    $eventsManager->attach('dispatch', $permission);

    $dispatcher = new \Phalcon\Mvc\Dispatcher();
    $dispatcher->setEventsManager($eventsManager);
    return $dispatcher;
});

//Deploy the app
$app = new \Phalcon\Mvc\Application($di);
echo $app->handle()->getContent();

} catch(\Phalcon\Exception $e) {
    echo $e->getmessage();
}
?>

如何解决依赖问题?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50993466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档