嘿,当我加载一个简单的模型时,不确定CodeIgniter为什么给我一个空白页面.我正在打破代码,倒退,我无法弄清楚什么是破坏.这是控制器:
class Leads extends Controller {
function Leads() {
parent::Controller();
$this->load->scaffolding('leads');
}
function index() {
$data = array( 'title' => 'Lead Management' );
$this->load->view('html_head', $data);
$this->load->view('leads/home');
$this->load->view('html_foot');
}
function view() {
$this->load->model('Leads');
$this->load->view('html_head');
$this->load->view('leads/view');
$this->load->view('html_foot');
}
}
Run Code Online (Sandbox Code Playgroud)
这是模型:
class Leads extends Model {
function Leads() {
parent::Model();
}
Run Code Online (Sandbox Code Playgroud)
}
我没有在/ view上看到白页的唯一方法是我注释掉模型的加载.我完全不知道我做错了什么,我正在复制示例和结构,直接在CI网站上.
在CodeIgniter视图中检查当前URI段的最佳方法是什么?我想要做的是使用当前的URI段[即$ this-> uri-> segment(1)],以突出显示导航栏上的当前页面.
我想到的最好的就是去做
$data['current_uri'] = $this->uri->segment(1);
$this->load->view('header', $data);
Run Code Online (Sandbox Code Playgroud)
在我的每个控制器中,然后在header.php文件中,我检查$ current_uri变量以确定应该突出显示导航的哪个部分.如你所知,这是一种非常繁琐的方式,但我却失去了一种更好的方法.
甚至可以扩展默认的Controller类来传递当前的URI段,但我不确定这是否可行,甚至不知道如何去做.
我正在使用ActiveRecord做一些db查询,我需要对结果进行分页,所以我做了一个
$this->db->limit($pPagination['Start'], $pPagination['Length']);
Run Code Online (Sandbox Code Playgroud)
但我没有得到任何结果.使用$this->db->last_query();它似乎CodeIgniter生成以下SQL
SELECT *
FROM (`viw_contacts`)
WHERE `user_id` = '1'
ORDER BY `contact_name` asc
LIMIT 0 OFFSET 15
Run Code Online (Sandbox Code Playgroud)
当我在PHPMyAdmin中运行它时,它返回0行.
但如果我修改它运行:
SELECT *
FROM (`viw_contacts`)
WHERE `user_id` = '1'
ORDER BY `contact_name` asc
LIMIT 0, 15
Run Code Online (Sandbox Code Playgroud)
然后我得到了正确的结果.CodeIgniter为什么会生成这个SQL以及为什么它不起作用的任何想法?
我使用CodeIgniter 1.7.3和MySQL 5.1.41
我目前的方法是使用codeigniter提供的_remap函数来获取URI段,以检查语言是"en"还是"np"
这是一个示例:
function _remap($url_title){
$this->_identify_language($this->uri->segment(1));
$data ['sub_categories'] = $this->category_model->get_category_list_by_url($url_title)->result_array();
$data ['news'] = $this->news_model->get_news_list_by_url($url_title)->result_array();
$data ['url_title'] = $url_title;
$this->_render_front_view('main',$data);
}
Run Code Online (Sandbox Code Playgroud)
我在每个控制器上都使用这种技术.哪个效率不高.
我想询问使用会话来存储语言代码会更好还是我目前的技术是否足够好?
有没有其他方法可以做这种多语言的事情?
当然,我的数据库目前已形成2个语言,我已经分开了这些领域.例如: - title_en,title_np.这些都是根据使用的语言字段来回应的.
我正在使用codeigniter,我在我的模型中有以下功能给用户点.但它不起作用,而是将points列设置为0.
这是它在codeigniter手册中的编写方式.因此我不知道为什么它不起作用......
谢谢
function give_points($username,$points)
{
$this->db->set('points', 'points + $points');
$this->db->where('username', $username);
$this->db->update('users');
echo"done";
}
Run Code Online (Sandbox Code Playgroud) 我在这里遇到了一个问题,当我尝试使用ajax(POST)发布内容时,我一直收到错误.我知道CSRF给了我这些问题,并且我一直在尝试寻找解决方案.但是,我希望有人可以帮助我!
这是我一直得到的错误(来自谷歌浏览器检查员),
*无法加载资源:服务器响应状态为500(内部服务器错误)XHR已完成加载:"http:// localhost/woho/ajax/images".*
PHP(控制器)
class Ajax extends CI_Controller {
function images() {
echo 'Hello World';
}
}
Run Code Online (Sandbox Code Playgroud)
使用Javascript
var ID = $(".imageWrap:last").attr("id");
var baseurl = "http://localhost/woho/";
var doScroll = 1;
var cct = $.cookie('csrf_cookie_name');
if (location.href == baseurl) {
$(window).scroll(function(){
if ($(window).scrollTop() > $('body').height() / 2) {
if(doScroll == 1) {
$.post(baseurl + 'ajax/images',{'id' : ID, 'csrf_token_name': cct}, function(data) {
alert(data);
$("#wrapper_content").append(data);
ID++;
});
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
我的CCT var来自javascript给了我正确的令牌或"哈希"但是当javascript发送ajax请求时,codeigniter返回一个错误,如,
一个错误遇到您所请求是不允许的行动.
我怎样才能解决这个问题?我是否需要在控制器中验证CSRF令牌或其他内容?
我正在使用Codeigniter 2.0.3
我将为我的最终Web开发课程项目构建一个CMS,并且我的老师在MVC系统中创建了它的挑战,现在,我将使用CodeIgniter.
因此,我想知道如何组织文件/文件夹结构.
我将使用一个简单的模板系统: - 现在我有一个自动加载的templates.php配置文件,并说明所选模板的名称,以及它的绝对路径. - templates文件夹位于views文件夹中(这是最正确的方法吗?) - 现在我有一些问题,通过视图中的文件访问.css文件,从我读过的人通常将所有文件放在应用程序文件夹之外.
你通常怎么做?而且,看到我正在建设什么,你能给我什么建议?视图不应包含模板中的所有内容吗?(包括模板文件夹中的CSS)
谢谢.
(我正在使用Code Ignitor 2.1.0)
编辑:
现在,在构建了所有文件和文件夹之后,我处于两难境地.我在constants.php中添加了以下内容
<!-- language: lang-php -->
$config['selected_template'] = 'oceania';
$config['template_abs_path'] = 'assets/templates/'.$config['selected_template'];
define('IMAGES_PATH', $config['template_abs_path'].'/img/' );
define('CSS_PATH', $config['template_abs_path'].'/css/' );
define('SCRIPTS_PATH', $config['template_abs_path'].'/js/' );
Run Code Online (Sandbox Code Playgroud)
(如果我没有定义selected_template和template_abs_path,我可以在常量中使用它们)
我将它们包含在HTML中,如下所示:
<!-- language: lang-html -->
<link rel="stylesheet" type="text/css" href="<?=CSS_PATH;?>style.css" />
Run Code Online (Sandbox Code Playgroud)
但是现在,我试图获得一个存储在配置中的标题,但我不能这样做,因为我需要所有这些变量都在我之前创建的其他templates.php文件中,否则它将无法识别我的变量.(我有模板自动加载)
templates.php
<!-- language: lang-php -->
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['title'] = 'Title of the website';
$config['selected_template'] = 'oceania';
$config['template_abs_path'] = 'templates/'.$config['selected_template'];
Run Code Online (Sandbox Code Playgroud)
header.php文件
<div id="logo">
<h1><a href="#"><?=$this->config->item('title');?></a></h1>
</div> …Run Code Online (Sandbox Code Playgroud) 我正在运行 codeigniter 4.1.5 和 php 8.1.0,当我尝试输入数据时,这是我得到的错误
未捕获的 ErrorException:strtolower():在 C:\xampp\htdocs\cikaryawan\system\Validation\FormatRules.php:253 中不推荐将 null 传递给字符串类型的参数 #1 ($string) 堆栈跟踪:
CI_ENVIRONMENT = development
database.default.hostname = localhost
database.default.database = cikaryawanauth
database.default.username = root
database.default.password =
database.default.DBDriver = MySQLi
database.default.DBPrefix =
Run Code Online (Sandbox Code Playgroud)
这是我的register.php
<body>
<div class="container">
<div class="row" style="margin-top:45px">
<div class="col-md-4 col-md-offset-4">
<h4>Sign Up</h4>
<hr>
<form action="<?= base_url('auth/save') ?>" method="post"> …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的codeigniter应用程序中实现页面模板,模板工作正常,例如,我有一个博客页面,我试图指定为我的主页,具有不同的视图和分页等等.当我写www.mywebsite.com/blog时,它会在主页模板中打开,或者假设我有一个页面www.mywebsite.com/about,它也会在页面模板中打开.但是当我尝试通过www.mywebsite.com访问我的网站时,我有一个404错误页面.如何将我的博客页面指定为主页?
页面控制器:
class Page extends Frontend_Controller {
public function __construct(){
parent::__construct();
$this->load->model('page_m');
}
public function index() {
// Fetch the page template
$this->data['page'] = $this->page_m->get_by(array('slug' => (string) $this->uri->segment(1)), TRUE);
count($this->data['page']) || show_404(current_url());
add_meta_title($this->data['page']->title);
add_meta_keyword($this->data['page']->keywords);
add_meta_description($this->data['page']->description);
// Fetch the page data
$method = '_' . $this->data['page']->template;
if (method_exists($this, $method)) {
$this->$method();
}
else {
log_message('error', 'Could not load template ' . $method .' in file ' . __FILE__ . ' at line ' . __LINE__);
}
// Load the view
$this->data['subview'] …Run Code Online (Sandbox Code Playgroud) codeigniter ×10
php ×9
activerecord ×1
ajax ×1
css ×1
javascript ×1
jquery ×1
php-8.1 ×1
testing ×1
unit-testing ×1