标签: codeigniter

codeigniter如何根据uri段的no来设置路由到默认控制器

我在我的项目中使用codeigniter作为模块来显示信息作为类别及其项目.

我希望网址如下所示

  1. sitename.com/module/将以随机顺序显示所有项目.
  2. sitename.com/moduel/categoryname/将显示该特定类别中的所有项目
  3. sitename.com/module/categoryname/title-of-the-item/这将显示该特定项目的详细信息

这里sitename.com/module/是codeigniter的根,默认控制器是home.

我的问题是如何为一个段或uri和两个uri段设置路由

  1. sitename.com/module/应加载默认控制器(在我的情况下为home)
  2. sitename.com/module/categoryname/应该加载home/category/categoryname
  3. sitename.com/module/categoryname/title-of-the-item应该加载索引/标题/标题的项目

我将按如下方式定义我的功能

  1. 功能索引()...
  2. 功能类别($ categoryname)....
  3. 功能标题($ title)....

所以,要么我想根据段的数量创建一个路由,或者如果有任何其他备用通过路由来完成这个,那么这很好.

我想使用路由而不是将2段作为参数传递给Index函数.

那么,?

codeigniter url-routing

1
推荐指数
2
解决办法
2万
查看次数

如何让MY_Controller中的__construct()运行?

可能重复:
Codeigniter扩展扩展的MY_Controller

我一直在摆弄这个问题已经有一段时间了,我正处于挫折之中.我正在使用MY_Controller扩展控制器类.

以下是详细信息:

  • __construct() 似乎没有被称为.
  • 该文件应该位于应用程序/核心中
  • 该文件名为MY_Controller.php
  • 我已经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()只是没有运行.

php constructor codeigniter extend

1
推荐指数
1
解决办法
234
查看次数

Codeigniter奇怪的问题,一些链接与尾部斜线工作有些不

我有一个奇怪的问题.我有一个Codeigniter应用程序,它在我的本地机器上完美地工作,但在远程服务器它没有.以下是场景

  1. 某些带有尾部斜杠的链接可以正常工作,但没有斜杠显示Firefox中的"连接已重置"错误.

  2. 某些链接没有尾部斜杠,但是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)

任何帮助将受到高度赞赏.谢谢!

.htaccess codeigniter

1
推荐指数
1
解决办法
1774
查看次数

CodeIgniter将数据传递给视图

我试图从我的控制器传递到这样的视图......

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

php codeigniter

1
推荐指数
1
解决办法
3157
查看次数

从控制器JSON传递值以查看CodeIgniter中的Ajax

问题是我得到的对话框为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 ajax jquery json codeigniter

1
推荐指数
1
解决办法
3878
查看次数

Codeigniter中使用SimpleHTMLDOM

我的问题是,我正在寻找使用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)

php customization parsing codeigniter

1
推荐指数
1
解决办法
4110
查看次数

Codeigniter从数据库中复制元素

我有一个页面,其中包含从数据库加载的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 codeigniter-2

1
推荐指数
1
解决办法
1395
查看次数

我应该将页面数据存储在json中吗?

我在顶级codeigniter上的php 5.3中编写了一个cms系统.数据的内容,我已经确定,它的大小和形式非常大,我想知道在MySQL中以JSON格式存储数据是否是一个不错的选择.我需要能够以结构化的方式存储数据,但是它的结构方式,字幕的数量非常多,有时可能需要使用列表,表格或其他元素.

我想在最后创建一个工具库来创建不同类型的站点,让lib构建得非常模块化,这样你就可以将它剥离到每个站点的最小尺寸.

JSON是正确的选择还是处理器密集型?

php json codeigniter content-management-system

1
推荐指数
1
解决办法
127
查看次数

Codeigniter:SMTP邮件无法正常工作

我正在尝试设置联系表单,我很难让它使用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)

php email smtp codeigniter

1
推荐指数
1
解决办法
2万
查看次数

site_url()在codeigniter框架中无法正常工作

以下工作对于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 codeigniter-url

1
推荐指数
1
解决办法
2万
查看次数