Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii-无控制器的路由_Yii - Fatal编程技术网

Yii-无控制器的路由

Yii-无控制器的路由,yii,Yii,我正在使用需要用户身份验证的现有上载脚本。但是,由于我没有编写上传脚本,所以我几乎不可能阅读源代码并将其放入单独的视图和控制器文件中。问题是,如果脚本没有通过引导文件进行路由,则它无法访问Yii变量,从而无法访问用户登录信息 我尝试在用户登录时设置自定义会话变量。然而,它几乎不能工作,因为我的自定义会话将在Yii设置的会话之前过期 如果有任何帮助,我们将不胜感激。您正在使用mvc模式的框架,因此控制器是路由请求的首选方式。根据您的问题,我建议您使用htaccess文件路由到所需文件,并通过Yii

我正在使用需要用户身份验证的现有上载脚本。但是,由于我没有编写上传脚本,所以我几乎不可能阅读源代码并将其放入单独的视图和控制器文件中。问题是,如果脚本没有通过引导文件进行路由,则它无法访问Yii变量,从而无法访问用户登录信息

我尝试在用户登录时设置自定义会话变量。然而,它几乎不能工作,因为我的自定义会话将在Yii设置的会话之前过期


如果有任何帮助,我们将不胜感激。

您正在使用mvc模式的框架,因此控制器是路由请求的首选方式。根据您的问题,我建议您使用htaccess文件路由到所需文件,并通过Yii处理其他文件。

将代码从现有源复制到新的Yii控制器/操作。。。完成:D

由于脚本的编写方式,我只能找到一种方法。这将涉及重新编写脚本的某些元素

  • 将文件管理器保存在受保护/供应商中

  • 您需要一个控制器来处理请求的路由。这也将为您提供所需的访问控制。称之为FileUpload,并在项目中通常创建控制器的位置创建它。就在控制器的开始,在声明类之前,从以前保存的位置导入fileUpload文件<代码>Yii::导入('application.vendors.*')

  • 您需要一个操作来处理传入的请求。称之为actionIndex。给它下面的代码

    public function actionIndex() {
        //Start capturing the output from the script
        ob_start();
        require_once('filemanager/dialog.php');
    
        //Finish capturing output, and save to a variable
        $output = ob_end_clean();
        $this->render('index', array('output' => $output));
    }
    
  • 然后需要一个视图文件。称它为'output.php',它只包含一行<代码>

  • 这将呈现由脚本生成的html,并希望将其包含在现有模板中

    第一个问题是,脚本发送的头不会被ob_start丢弃。您需要从脚本中删除这些内容。它还启动一个会话,该会话将抛出一个错误“session ready started”,可以通过将config.php的第一行更改为

    if(!isset($_SESSION)) 
        { 
            session_start(); 
        }
    
    您的下一个问题是没有加载任何脚本和样式表,因为供应商没有使用相对文件路径,也因为您刚刚删除了标题。您需要重新编写大量脚本以包含必要的文件。幸运的是,您现在可以访问Yii函数,因此可以使用资产管理器发布脚本所需的所有js和css文件

    最后一个(希望如此!)问题是脚本页面使用的URL。目前,它们都指向脚本中的文件。您需要重写这些以使用Yii路由。幸运的是,在main file dialog.php中,您应该可以访问所有正常的Yii函数,因此您可以将$baseUrl设置为$this->createUrl()等。如果需要向控制器添加额外操作,您可以按照上面的模式调用其他文件,如脚本中的upload.php文件


    希望所有的工作为你

    请用更多的努力和比喻的方式来阐述你的问题。好的,让我们再试一次。如果我没有控制器和视图文件,我如何创建一个路由,使Yii直接指向服务器上的脚本文件(例如localhost/upload.php)您的Yii应用程序能否访问与上载脚本相同的数据库?您能否将脚本文件重新定位到另一个文件夹?脚本文件是自包含的,还是依赖其他文件进行操作?@JoeMiller我使用的脚本是responsivefilemanager.com,它有一个引导文件config.php和其他操作php文件。