我开始使用基于CI 2.0 Reactor存储库的新CI项目.因为CI2代码仍在变化,我想保持代码新鲜,问题是如何(使用Git).
对于非CI人员,CI2项目的基本结构如下所示:
system/
application/
index.php
...
Run Code Online (Sandbox Code Playgroud)
系统目录包含框架,index.php执行引导和应用程序包含我的项目.理想情况下,我想使用Git使index.php和系统文件夹保持最新.我想要遵守的另一件事是应用程序文件夹的名称.(您可以在index.php中更改应用程序文件夹的路径.)保持名称相同可以直接放入文件夹,然后离开.
我试图通过使用git子模块来实现这一点(见下文),但是子模块不允许您从目标存储库中指定目录.
git submodule add https://github.com/philsturgeon/codeigniter-reactor.git/code-igniter/system system
Run Code Online (Sandbox Code Playgroud)
任何线索我怎么能实现这一目标?
我还在试图想办法让移动网站运行起来.我在CodeIgniter中有一个Web应用程序,我想创建它的移动版本.但是,我不想重写太多的代码,特别是我的模型.(因为它们返回我可以在任何地方使用的原始数据.)
我想在子域(m.mydomain.tld)上运行我的移动网站.桌面版本运行于www.mydomain.tld.我尝试将子域指向我的CI应用程序文件夹; 当移动浏览器到达时www.mydomain.tld,我将其重定向到m.mydomain.tld.正如我所说,这个子域指向我的CI应用程序文件夹; 然后我提供移动优化的控制器和视图.
然而!如上所述app/config/config.php,我的应用程序的base_url是:
$config['base_url'] = 'http://www.mydomain.tld/';
所以重定向到m.mydomain.tld没有真正起作用,因为我仍然被重定向到www我不想要那个,即使它然后做了我想要它做的事情.
我试图解决这个问题的方法是制作两个具有不同控制器/视图的应用程序文件夹,但共享模型等等.所以,我正在试图找到一种方法来重构我的CodeIgniter应用程序,以便我可以共享我的模型和'自定义controller'(MY_Controller),以及不同应用程序之间的一些自定义库/帮助程序.
我希望这很清楚,如果不是,我会很乐意解释更多我正在寻找的东西.非常感谢!
我使用CI的用户指南来创建会话表.
CREATE TABLE IF NOT EXISTS `sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(16) DEFAULT '0' NOT NULL,
user_agent varchar(120) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id),
KEY `last_activity_idx` (`last_activity`)
);
Run Code Online (Sandbox Code Playgroud)
每当我$db['default']['stricton'] = TRUE在database.php中时,都会显示此错误
错误号码:1364
字段'user_data'没有默认值
INSERT INTO
sessions(session_id,ip_address,user_agent,last_activity)VALUES( '2b92823888c4c5eb4b5b2ae25282ce9e', '192.168.1.4', '的Mozilla/5.0(Windows NT的6.1; WOW64)为AppleWebKit/535.1(KHTML,例如Gecko)铬/ 14.0.835.186 Safari浏览器/ 535.1',1317346730 )文件名:libraries/Session.php
行号:327
但是,我想强制执行严格的SQL.
我有一个包含表单的页面,当任何用户提交表单时,数据会转到控制器,控制器会检查验证,如果有任何错误,它会将用户重定向到上一页(包含表单的页面),否则它会将数据发送给模型.
要从控制器重定向到上一页(如果有任何验证错误),我有以下代码
redirect($this->input->post('redirect'));
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,但问题是它将用户重定向到上一页(包含表单的页面)后,它没有显示验证错误.
那么请您告诉我如何通过上面发布的"重定向"代码传递验证错误信息并在该页面上显示验证错误消息?
提前致谢 :)
在我的控制器中:
$redirect=$this->input->post('redirect'); // << for this I have- <input name="redirect" type="hidden" value="<?= $this->uri->uri_string() ?>" /> in my view file
$this->session->set_flashdata('errors', validation_errors());
redirect($this->input->post('redirect'));
Run Code Online (Sandbox Code Playgroud)
在我的视图文件中:
<?php
if ($this->session->flashdata('errors')){ //change!
echo "<div class='error'>";
echo $this->session->flashdata('errors');
echo "</div>";
}
?>
Run Code Online (Sandbox Code Playgroud)
因此,我可以通过从控制器重定向到上一页来传递验证错误数据
在完成特定任务后,我使用以下代码将用户重定向到上一页.
if (isset($_SERVER['HTTP_REFERER']))
{
$this->session->set_userdata('previous_page', $_SERVER['HTTP_REFERER']);
}
else
{
$this->session->set_userdata('previous_page', base_url());
}
Run Code Online (Sandbox Code Playgroud)
我在控制器中使用上面的代码,在另一个控制器中使用以下代码.
.... some other stuffs... I am updating database values here....
$this->db->where('t_expenseid', $t_expenseid);
query=$this->db->update('teacherexpense', $data);
redirect($this->session->userdata('previous_page'));
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,但我面临的问题是我想发送一个带有重定向的成功消息,以便当上一页加载成功消息时弹出(我已经有了jquery).为此我在重定向上面添加了以下代码,但我不知道如何发送$ data或消息以及重定向.如果我能够发送它如何检索上一页的控制器中的值.
$data['msg']='Information Has been Successfully Inserted';
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何发送然后检索它吗?
谢谢 :)
我目前正在使用Form Validation类(在Codeigniter上)和设置规则.
它有两个参数(codeigniter.com/user_guide/libraries/form_validation.html):
$this->form_validation->set_rules('username', 'Username', 'callback_test[abc]');
Run Code Online (Sandbox Code Playgroud)
但是第三个参数呢?还有第四个......?可能吗?
validation codeigniter callback validationrules codeigniter-2
我在CodeIgniter上使用Active Record.我很困惑我应该采取哪种方法.目前,我们的登录系统允许用户使用用户名/电子邮件进行登录以及密码.但我目前的活跃记录似乎让用户登录,如果他选择使用电子邮件+没有密码.
现在这是我的查询:
$this->db->select('id,level,email,username');
$this->db->where('email',$user);
$this->db->or_where('username',$user);
$this->db->where('password',$pass);
$query = $this->db->get('users');
if($query->num_rows>0)
return TRUE;
else
return FALSE;
Run Code Online (Sandbox Code Playgroud)
样本输入:
第四个测试输入必须是Failed in result,但即使密码为空,它似乎也会记录用户.
我正在尝试上传图片并调整它们的大小,到目前为止上传工作还有拇指指甲图像的创建.但我不能让原始图像调整大小.所有发生的事情是文件以原始大小直接上传到文件夹.我想我正在尝试将此图像调整大小然后覆盖最初上传的文件.
这是我的代码,我错过了什么:
//Initialise the upload file class
$config['upload_path'] = './image_uploads/';
$config['allowed_types'] = 'jpg|jpeg|gif|png';
$config['max_size'] = '6048';
$this->load->library('upload', $config);
$userfile = "_upload_image";
//check if a file is being uploaded
if(strlen($_FILES["_upload_image"]["name"])>0){
if ( !$this->upload->do_upload($userfile))//Check if upload is unsuccessful
{
$upload_errors = $this->upload->display_errors('', '');
$this->session->set_flashdata('errors', 'Error: '.$upload_errors);
redirect('admin/view_food/'.$food->course_id);
}
else
{
//$image_data = $this->upload->data();
////[ THUMB IMAGE ]
$config2['image_library'] = 'gd2';
$config2['source_image'] = $this->upload->upload_path.$this->upload->file_name;
$config2['new_image'] = './image_uploads/thumbs';
$config2['maintain_ratio'] = TRUE;
$config2['create_thumb'] = TRUE;
$config2['thumb_marker'] = '_thumb';
$config2['width'] = 75;
$config2['height'] = 50;
$this->load->library('image_lib',$config2); …Run Code Online (Sandbox Code Playgroud) PHP框架"CodeIgniter"提供了一个Session类,它不使用本机PHP-Sessions.相反,他们使用Cookies开发了自己的Session系统.
在他们的网站CodeIgniter.com上,他们写了以下内容:
Note: The Session class does not utilize native PHP sessions. It generates its own session data, offering more flexibility for developers.
Run Code Online (Sandbox Code Playgroud)
如下所述,最多只能保存4KB.
Note: Cookies can only hold 4KB of data, so be careful not to exceed the capacity. The encryption process in particular produces a longer data string than the original so keep careful track of how much data you are storing.
Run Code Online (Sandbox Code Playgroud)
那么,这如何为程序员提供更多的灵活性呢?开发人员不使用本机PHP会话的实际原因是什么?
感谢您的信息!
我已经使用django一段时间了,我决定开始一个新项目,但这次在Codeigniter中,我曾经在我的视图中扩展模板文件,并将内容放在{%block content%}块内,但它看起来是在CodeIgniter中有所不同.
在CodeIgniter中我有类似的东西:
<?php
$this->load->view('header');
$this->load->view('form_add_customer');
$this->load->view('footer');
?>
Run Code Online (Sandbox Code Playgroud)
但有没有办法像这样有一个标题,内容和页脚的独特文件?
<html>
<head><title>Test</title></head>
<body>
<div id="header">Welcome</div>
<div id="content">
</div>
<div id="footer"> 2013 - Tectcom Telecom</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
并在内容div中放置一个带有表单的视图文件?
codeigniter-2 ×10
codeigniter ×9
php ×2
activerecord ×1
callback ×1
cookies ×1
database ×1
git ×1
mobile ×1
mysql ×1
session ×1
validation ×1