我在我的项目中使用codeigniter作为模块来显示信息作为类别及其项目.
我希望网址如下所示
这里sitename.com/module/是codeigniter的根,默认控制器是home.
我的问题是如何为一个段或uri和两个uri段设置路由
我将按如下方式定义我的功能
所以,要么我想根据段的数量创建一个路由,或者如果有任何其他备用通过路由来完成这个,那么这很好.
我想使用路由而不是将2段作为参数传递给Index函数.
那么,?
我一直在摆弄这个问题已经有一段时间了,我正处于挫折之中.我正在使用MY_Controller扩展控制器类.
以下是详细信息:
__construct() 似乎没有被称为.MY_设置为扩展的前缀(我有其他扩展工作正常)这是我的代码:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
echo 'TESTING!!!'; // This should print, followed by an ob_start() error
}
}
Run Code Online (Sandbox Code Playgroud)
我应该得到一个页面,TESTING!!!后面跟着一个ob_start()错误,但是页面正常渲染.
我试过拆分构造函数类并只调用MY_Controller中的私有函数,但这不起作用.我知道正在调用该文件,因为如果我故意在MY_Controller.php中创建一个php错误,该页面将会出错.在我看来,它__construct()只是没有运行.
我有一个奇怪的问题.我有一个Codeigniter应用程序,它在我的本地机器上完美地工作,但在远程服务器它没有.以下是场景
某些带有尾部斜杠的链接可以正常工作,但没有斜杠显示Firefox中的"连接已重置"错误.
某些链接没有尾部斜杠,但是WITH尾部斜杠显示Firefox中的"连接已重置"错误.
我确信编码没有错误,因为.我认为罪魁祸首是.htaccess文件.以下是我的.htaccess文件
RewriteEngine on
RewriteBase /demo/
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
任何帮助将受到高度赞赏.谢谢!
我试图从我的控制器传递到这样的视图......
public function playerslist()
{
$this->load->database();
$data = $this->db->get('skaters');
$this->load->helper('url');
$this->load->view('playerslist', $data);
}
Run Code Online (Sandbox Code Playgroud)
在我看来......
<?php echo $data; ?>
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误......
遇到PHP错误
严重性:注意
消息:未定义的变量:数据
文件名:views/playerslist.php
行号:76
我究竟做错了什么?
我想对这些数据做什么放在foreach语句中并显示$ data数组中的所有内容
foreach($data as $value => $key){
echo $key . "<br/>";
}
Run Code Online (Sandbox Code Playgroud)
谢谢,J
问题是我得到的对话框为false但查询运行正常并且值已成功添加到数据库中.它应该打印成真,但它给了我一个假的.我通过Firebug检查了值res = 1,但我不知道它有什么问题.
我的看法:
$.ajax({
url: "<?php echo site_url('itemsController/additems'); ?>",
type: 'POST',
data: form_data,
success: function(msg) {
if(msg.res == 1)
{
alert(true);
}
else
{
alert(false);
}
}
});
Run Code Online (Sandbox Code Playgroud)
控制器:
$result = array();
$this->load->model('itemsModel');
$query = $this->itemsModel->addItemstoDB($data);
if ($query){ //&& any other condition
$result['res'] = 1;
}
else
{
$result['res'] = 0;
}
echo json_encode($result); //At the end of the function.
}
}
Run Code Online (Sandbox Code Playgroud) 我的问题是,我正在寻找使用Php Simple Html Dom Parser的方法,但是该文件似乎只是一个集合,functions而不是class SomeClass{}声明,因此很难像我声明后那样将其作为自定义内容 嵌入library到codeigniter中。 。$ this-> load-> library('someclass');
我已将此代码放在用于简单HTML Dom解析器的pastebin中:http : //pastebin.com/0rR6Kiex
我想知道如何通过定义的类轻松地使所有这些功能可用:
class MyClass{
## contents of pastebin here
}
Run Code Online (Sandbox Code Playgroud)
所以我可以加载codeigniter,例如:
$this->load->library('myclass');
$thus->myclass->fetchlinks();
Run Code Online (Sandbox Code Playgroud)
目前,我正在尝试手动要求一个php文件,这有点违反了使用codeigniter的观点:
function fetchlinks(){
## include the Simpledom framework #########################################################
include "localhost/mysite/assets/php/Simpledom.php" or die('Error occured on page'); #
}
Run Code Online (Sandbox Code Playgroud) 我有一个页面,其中包含从数据库加载的4个产品,当您向下滚动时,每次都会获得4个产品.
这个产品是随机加载的,问题是重复的产品.
这是我在模型中使用的行:
$this->db->order_by('productID', 'RANDOM');
Run Code Online (Sandbox Code Playgroud)
没有这条线,一切正常.我不能使用limitset to 1,因为我有:
$query = $this->db->get('product', 4, $offset);
Run Code Online (Sandbox Code Playgroud)
有一种简单的方法可以解决这个问题吗?我要做一个包含所有产品的数组?
UPDATE
这是index.php中的脚本
<script type="text/javascript">
$(document).ready(function(){
var products = <?= $get_products ?>;
var loaded_products = 0;
$(".loadMoreProducts").click(function(){
loaded_products += 4;
var dati = "welcome/get_products/" + loaded_products;
$.ajax({
url:'welcome/get_products/' + loaded_products,
type: 'get',
data: dati,
cache: false,
success: function() {
$.get(dati, function(data){
$("#mainContainerProductWelcome").append(data);
});
if(loaded_products >= products - 4) {
$(".loadMoreProducts").hide();
} else {
// load more still visible
}
},
error: function() {
// there's …Run Code Online (Sandbox Code Playgroud) 我在顶级codeigniter上的php 5.3中编写了一个cms系统.数据的内容,我已经确定,它的大小和形式非常大,我想知道在MySQL中以JSON格式存储数据是否是一个不错的选择.我需要能够以结构化的方式存储数据,但是它的结构方式,字幕的数量非常多,有时可能需要使用列表,表格或其他元素.
我想在最后创建一个工具库来创建不同类型的站点,让lib构建得非常模块化,这样你就可以将它剥离到每个站点的最小尺寸.
JSON是正确的选择还是处理器密集型?
我正在尝试设置联系表单,我很难让它使用CI中的SMTP配置.但是我已经成功尝试了基本的'mail'配置.
简而言之,我正在使用这个简单的代码进行测试:
$config = array(
'protocol' => 'smtp',
'smtp_host' => 'smtp.1and1.es',
'smtp_port' => 25,
'smtp_user' => 'user@mysite.com',
'smtp_pass' => '********',
'mailtype' => 'text',
'charset' => 'utf-8',
'wordwrap' => true,
'wrapchars' => 50
);
$this->load->library('email');
$this->email->initialize($config);
$this->email->from('my_real_email_address@gmail.com');
$this->email->to('my_real_email_address@gmail.com');
$this->email->reply_to('my_real_email_address@gmail.com', 'John Doe');
$this->email->subject('Message sent from the contact form in website');
$this->email->message('Body of message...');
if ($this->email->send()) {
return true;
}
echo '<!--' . print_r($this->email->print_debugger(), true) . '-->';
return false;
Run Code Online (Sandbox Code Playgroud)
我刚刚问过我的托管服务提供商,所有的SMTP配置都是正确的.他们还检查了我的电子邮件帐户是否正常工作.
事实上,如果我选择:
protocol =>'mail'
消息传递没有问题.AFAIK php mail()函数也使用托管服务提供商SMTP,但它只是将其交给服务器并忘记它.
相反,我想使用SMTP身份验证,担心发送电子邮件.但只能通过改变
protocol =>'smtp'
当我发送表单时有很多处理时间,我终于得到了这个调试消息:
220 smtp.1and1.es (mreu2) …Run Code Online (Sandbox Code Playgroud) 以下工作对于codeigniter框架不能正常工作......
它是我的观点:
<?php
echo '<h2>'.$news_item['title'].'</h2>';
echo $news_item['text']."</br></br>";
?>
<a href="<?php site_url("news"); ?>" > Back to Main </a></br></br>
Run Code Online (Sandbox Code Playgroud) codeigniter ×10
php ×6
json ×2
.htaccess ×1
ajax ×1
constructor ×1
email ×1
extend ×1
jquery ×1
parsing ×1
smtp ×1
url-routing ×1