我有一个常量列表(我将它们用作枚举),一些是定义语句,有些只是全局变量.
我想在哪里将它们放在MVC框架中,以便我可以将它们用于我的模型和需要引用它的控制器?
我宁愿不把它粘在config/constants.php中,因为除了这个模型和使用它的控制器之外不应该调用它们.
编辑1:澄清
更具体地说,我有我的message_model模型,它有一堆我需要存储的常量message_model_constants.php.我应该放在哪里message_model_constants.php,是否有一种方法让控制器自动包含它,message_model当message_model不是(我不希望它)自动加载时加载.
编辑2:
除了我使用模型时,我真的不想自动加载常量
我使用带有CodeIgniter的HMVC扩展,我有2个模块
modules/frontpage
-- controllers
frontpage.php ( <- this controller needs to load the person model)
-- models
-- views
modules/person
-- controllers
-- models
person_model.php ( defines Person_Model extends Model )
-- views
Run Code Online (Sandbox Code Playgroud)
$this->load->model('person_model')在frontpage控制器中使用似乎只加载包含在同一模块中的全局或模型(frontpage模型).
这里有CodeIgniter专家吗?
我正在寻找一种算法来压缩我用PHP编写的CMS的HTML输出,用CodeIgniter框架编写.
我想试图任何尖括号之间除去空白,除 <script>,<pre>以及<style>元件和简单地忽略为了简化的那些元素.我应该澄清这是连续标签之间的空白,它们之间没有文字.
我应该如何解析HTML以找到我想要删除的空格?
编辑:要开始,我想删除不在<pre>标签中的所有制表符.这可以用正则表达式完成,我敢肯定,但有哪些替代方案?
我正在使用CodeIgniter来构建多语言Web应用程序.我在/system/languages/文件夹下有英语和其他语言,我创建了一个模型,负责在运行时更改工作语言.
默认情况下,CodeIgniter使用法语定义 /application/config/config.php
$config['language'] = 'french';
之后,根据URI段,模型会相应地更改语言,简化示例如下:
class multilang extends CI_Model {
public function __construct() {
parent::__construct();
if ($this->uri->segment(1) == 'en') {
$this->config->set_item('language', 'english');
}
}
}
Run Code Online (Sandbox Code Playgroud)
此模型是自动加载设置下列出的第一个模型/application/config/autoload.php,我可以通过调用以下方式确认语言确实已动态更改:
echo $this->config->item('language');
但是,内置表单验证库不考虑更改的语言,而只显示来自设置文件/application/config/config.php中硬编码的语言的错误消息,在本例中为French.
起初我假设这是因为表单验证是在multilang模型之前加载的.为了确保首先加载模型,我修改了表单验证构造函数以在之前的任何其他内容之前加载模型:
public function __construct($rules = array())
{
$this->CI =& get_instance();
$this->CI->load->model('multilang');
// normal code after....
}
Run Code Online (Sandbox Code Playgroud)
这确保在表单验证之前加载模型.不幸的是,这还不够,表单验证在运行时更改时仍会忽略语言.谁知道为什么会这样?
谢谢.
关于在codeigniter中使用哪种技术来编写模型,我非常困惑.
我搜索了很多,发现了各种程序员使用的各种方法.请指导我使用codeigniter编写Model Class的最佳方法.
几个例子;
有些在Method签名中使用长参数
function insert_data($name, $address, $email, $....,$...,$..)
Run Code Online (Sandbox Code Playgroud)
其他人只需使用以下内容并在模型中写下所有帖子代码.
function insert()
{
$name= $this->input->post('var1');
$name= $this->input->post('var1');
$name= $this->input->post('var1');
}
Run Code Online (Sandbox Code Playgroud)有些为每个表创建不同的模型,而有些只写很少的模型..
而且不同开发人员之间存在更多矛盾,我对使用哪种技术编写更高效的行业标准代码感到困惑.
请指导我非常感谢
我无法连接到firebird的本地银行.
因为我在php.ini中启用了以下扩展但没有得到任何结果.
延长= php_interbase.dll
扩展= "interbase.so"
延长= php_pdo_firebird.dll
我也做过interbase.so下载文件并将其复制到文件夹:
/选择/ LAMPP/lib中/ PHP /分机/无调试非ZTS-20131226 /
我正在使用:
我的文件database.php
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'SYSDBA',
'password' => 'masterkey',
'database' => 'localhost://home//ronald//fire//DEMO.GDB',
// 'port' => '3050',
'dbdriver' => 'ibase',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE, …Run Code Online (Sandbox Code Playgroud) Video
-------
id
source_low
source_med
source_high
Source
--------
id
duration
thumbnail
Run Code Online (Sandbox Code Playgroud)
视频项目可以包含至少1个或最多3个源(源低,源med,源高).
这个想法与youtube相同,这意味着视频记录可以包含多种质量.因此,当我返回持续时间/缩略图时,我想检查哪个源存在并返回其中一个.
例如,如果视频有source_low或source_med,这意味着source_low和source_med有持续时间和缩略图,那么我只需要返回其中一个.
Codeigniter语法:
$this->db->select('v.*, sl.duration, sm.duration as duration_m, sh.duration as duration_h, sl.thumbnail, sm.thumbnail as thumbnail_m, sh.thumbnail as thumbnail_h');
$this->db->from('video as v');
$this->db->join('source as sl', 'v.source_low = sl.video_id', 'left');
$this->db->join('source as sm', 'v.source_med = sm.video_id', 'left');
$this->db->join('source as sh', 'v.source_high = sh.video_id', 'left');
$this->db->group_by('v.id');
Run Code Online (Sandbox Code Playgroud)
SQL(缩略图与获取的方式相同):
SELECT v.*, sl.duration, sm.duration as duration_sm, sh.duration as duration_sh
FROM video as v
LEFT JOIN source as sl ON (v.source_low = sl.video_id) …Run Code Online (Sandbox Code Playgroud) 我想将我从javascript中获取的值传递给控制器.但我不使用任何功能.我只想访问控制器中视图中的值.我有以下观点.
<select id="selected_year" name="selected_year" data-live-search="true" style="margin-left: 27px;" >
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
<option value="2022">2022</option>
<option value="2023">2023</option>
<option value="2024">2024</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我使用以下javascript获取下拉值.
<script type="text/javascript">
$("#selected_year").live('change', function() {
var selected_year = $(this).attr("value");
alert(selected_year);
window.location.reload();
});
</script>
Run Code Online (Sandbox Code Playgroud)
我想把我从上面的javascript中获得的值传递给控制器.有可能吗?
这是我的第一个php框架.我的控制器中有一个php文件,它是posts.php但是当我尝试运行localhost/codeigniter/index.php/posts时,它显示错误404
.htaccess在应用程序文件夹中
<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>
Run Code Online (Sandbox Code Playgroud)
autoload.php
$autoload['libraries'] = array('database');
$autoload['helper'] = array('url');
Run Code Online (Sandbox Code Playgroud)
config.php文件
$config['base_url'] = 'http://localhost/codeigniter/';
$config['index_page'] = 'index.php';
Run Code Online (Sandbox Code Playgroud)
routes.php文件
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
Run Code Online (Sandbox Code Playgroud)
模型文件夹中的post.php
class Post extends CI_Model{
function get_posts($num = 20, $start = 0){
//$sql = "SELECT * FROM users WHERE active=1 ORDER BY date_added DESC LIMIT 0,20;";
$this->db->select()->from('posts')->where('active', 1)->order_by('date_added', 'desc')->limit(0, 20);
$query=$this->db->get();
return $query->result_array();
}
}
Run Code Online (Sandbox Code Playgroud)
控制器文件夹中的posts.php
class Posts extends CI_Controller{
function index(){ …Run Code Online (Sandbox Code Playgroud) 我正在为Codeigniter中的PHP脚本运行Cron Job来转换上传的视频.一切都执行没有任何问题,但一旦它将数据插入数据库,我收到此错误:
Error Number: 2006 MySQL server has gone away
该过程基本上转换视频,如果成功,则从视频创建缩略图和海报,然后将视频数据插入数据库.我试过添加$this->db->reconnect();我的模型功能.这是功能:
function add_video($data)
{
//BECASUE THE CONVERSION TAKES SO LONG WE NEED TO RECONNECT TO THE DATABASE AFTER EACH EXEC
$this->db->reconnect();
$this->db->insert('video_uploads', $data);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用我仍然收到错误.如果我$this->db->reconnect();在每次exec收到这些错误后添加:
Message: mysql_ping() expects parameter 1 to be resource, boolean given
Message: mysql_real_escape_string() expects parameter 2 to be resource, boolean given
就像我们使用FFMPEG转换我的视频一样.
所有执行完成后如何保持连接活动,以便将数据插入数据库?
编辑:这是Codeigniter的$this->db->reconnect();功能:
public function reconnect()
{
if (mysql_ping($this->conn_id) === FALSE)
{
$this->conn_id = FALSE;
}
}
Run Code Online (Sandbox Code Playgroud) codeigniter ×10
php ×8
mysql ×2
database ×1
firebird ×1
html ×1
html-parsing ×1
javascript ×1
model ×1
module ×1
multilingual ×1
sql ×1