将codeigniter页面包含到非codeigniter php页面中
我正在开发一个CMS,它不是自动生成页面,而是生成代码并提供给用户添加到他们的php页面 我正在将应用程序移动到CI的过程中,但正在为如何设置此过程而挣扎 通过制作2个codeigniter索引页(一个用于主应用程序,另一个用于连接,从而更改初始控制器和索引路径),这几乎可以实现,我希望的是这样的:将codeigniter页面包含到非codeigniter php页面中,php,codeigniter,path,include,Php,Codeigniter,Path,Include,我正在开发一个CMS,它不是自动生成页面,而是生成代码并提供给用户添加到他们的php页面 我正在将应用程序移动到CI的过程中,但正在为如何设置此过程而挣扎 通过制作2个codeigniter索引页(一个用于主应用程序,另一个用于连接,从而更改初始控制器和索引路径),这几乎可以实现,我希望的是这样的: <?php include("cms/connector.php"); ?> <html> .. <body> <h1>Static</h1&g
<?php include("cms/connector.php"); ?>
<html>
..
<body>
<h1>Static</h1>
<?php echo($cms['data']); ?>
</body>
..
静止的
它正确地提取文件并运行所调用的视图,但不保存视图中的变量
此外,我还需要能够针对他们试图获得的cms页面,但是:
<?php include("cms/connector.php/cms/2"); ?>
不再工作(我想是因为没有扩展?)如果我可以让这个部分工作,我就不需要担心变量,因为我可以直接在页面上包含视图
任何想法都很好
该应用程序可以托管在各种设置上,因此我希望它能够绕过包含直接url(http)的需要,因为默认情况下它可能并不总是打开的。另外,我不想使用ajax,因为我希望搜索引擎能够很好地获取内容您可以使用PHP的。下面摘自文档中的示例
<?php
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/cms/connector.php/cms/2");
curl_setopt($ch, CURLOPT_HEADER, 0);
// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
?>
请注意,这将拉取整个文档,包括doctype、
等。如果要在另一个页面中包含此内容,则这不是您想要的。您可能希望修改connector.php
以仅输出文档的正文。Codeigniter根据URI的环境状态路由应用程序
您需要做的是设置环境并包括索引视图文件,如下所示:
$_SERVER["REQUEST_URI"] = "cms/2";
//Set GET action,method params etc
require_once "path/to/index.php";
当您加载CI索引文件时,它会读取服务器变量以及您可能必须查找并执行控制器和方法的其他变量,我还建议您修改库/视图文件,因为它可能会在输出时退出,从而导致脚本退出
您也可以查看
ob\u start()
等以捕获缓冲区听起来像是在设计api。
(我不知道你为什么一半使用CI,其余部分使用自定义脚本。CI可以满足你的需要。)
下面的建议可能是显而易见的,也可能超出了您的预期答案,但如果它有帮助的话,我想把它放在桌面上
如果我正确理解了您的问题和评论,那么您的服务器上有站点的用户。您还有一个应用程序,该应用程序为他们提供代码,他们可以将这些代码粘贴到他们的站点中,以某种方式处理服务器上的信息
"example.com/cms/(index.php)/connector/function-name/auth-token/user-info"
控制器处理请求后,将信息返回给用户。您能否澄清“它正确地提取文件并运行调用的视图,但视图中的变量未保存。”视图中的变量是什么意思?是指提交表单时的变量?还是指视图文件中的变量未显示?什么是“2个codeigniter索引页”?你是说两个控制器吗?对不起,当我说变量没有保存时,我只是说它们没有被传输到包含它们的页面,但是如果我在页面上显示的视图中回显某些内容,则视图正在工作。我不希望变量被传递,但不确定是否有方法将它们传递到包含它们的文件。我搞乱了两个代码点火器索引页(根索引页)由于我的第二个问题,要尝试使用第二个,只需访问/cms/index2.php,就可以访问另一个控制器。在我的第二个问题中,include似乎只对索引页起作用,而没有对任何控制器起作用。我不明白为什么要访问两个index.php文件。Codeigniter使用url来指定控制器/函数/参数。如果您需要将用户引导到另一个“页面”,为什么不将它们发送到特定的控制器和函数,以加载您要显示的视图?这可能就是您的变量没有显示的原因…您是否使用$This->load->view('myview',$data\u to\u send\u to\u view)?我正在使用的脚本不在codeigniter中。我的codeigniter cms应用程序理想情况下会吐出用户放在其网页上的代码。这些代码会从mysql中提取内容。真的……这就是你要做的吗?这有什么坏处吗?因为这会在不同的设置中托管,所以速度慢还是经常被禁用?真的吗在我看来,这不是一个可行的方法,我宁愿从站点B创建一个API访问层。我将重新投你的反对票,因为我不清楚单独的托管情况,你的答案是可行的。托管将是相同的,我确信有不同的方法。我可能只需要在CI之外一起编写连接器脚本:/即使我正在设置服务器变量(CI输出-不存在URI数据),它似乎仍停留在索引页上。我可能遇到的另一个问题是用户可能希望在索引页上包含2个文本块