我已安装此simple-task-board codeigniter app from github。该应用程序有3个主页
项目详细信息在自己的模型和控制器中设置,任务也是如此。目前,项目视图显示了一个任务列表,但为了添加新任务,它必须将您传递到从任务MVC加载的另一个视图。
我的问题是在项目视图中获取“添加任务”表单的最佳方法是什么。我对MVC相对较新,但我知道我不应该尝试使用当前设置我要求的内容,即我不应该尝试从另一个控制器加载视图。最好的策略是尝试加入两个独立的MVC,还是我应该放弃尝试这样做并从头开始重写整个事情?
我确实尝试使用库将控制器类从一个MVC传递到另一个MVC但最终导致了许多数据库错误。我假设这不是一个好计划?
更新 - 添加额外代码:
public function tasks($project_id)
{
$this->load->helper('stb_date');
$this->load->helper('tasks');
// Check permission
if(!$this->usercontrol->has_permission('project', 'tasks'))
redirect('dashboard');
// Load tasks
$this->load->model('task_model');
$tasks = $this->task_model->get($project_id);
foreach ($tasks as $task) {
if ($task['status'] == 0) {
$data['stories'][] = $task;
} elseif ($task['status'] == 1) {
$data['tasks'][] = $task;
} elseif ($task['status'] == 2) {
$data['tests'][] = $task;
} elseif ($task['status'] == 3) {
$data['done'][] = $task;
}
}
// Load project info
$this->load->model('project_model');
$project = $this->project_model->get($project_id);
$this->title = "Project: {$project['name']}";
$this->menu = 'dashboard|edit_project|new_task';
$data['project_id'] = $project_id;
$data['current_user'] = $this->session->userdata('user');
$db_users = $this->project_model->get_related_users($project_id);
$users = array();
foreach ($db_users as $user) {
$users[$user['id']] = $user;
}
$data['users'] = $users;
// Load text helper to be used in the view
$this->load->helper('text');
// Load View
$this->load->view('task_board', $data);
//new code added here
$task_data['parent_id'] = 0;
$task_data['title'] = '';
$task_data['description'] = '';
$task_data['priority'] = '2';
$task_data['due_date'] = '';
$project = '1';
$task_data['project_id'] = $project;
$task_data['users'] = $this->task_model->get_related_users($project);
$task_data['user_id'] = $this->session->userdata('user');
$task_data['tasks'] = $this->task_model->get_hierarchy($project);
if($this->error)
$task_data['error'] = $this->error;
$task_data['task_data'] = $this->load->view('task_add',$task_data,true);
}
答案 0 :(得分:1)
我使用CI非常多,而且有点像它但请注意,如果你刚刚开始使用MVC。过去维护它的公司正在寻找新的所有者:http://ellislab.com/blog/entry/ellislab-seeking-new-owner-for-codeigniter。
至于你的问题,这个视图看起来像是你要复制/移动的形式:https://github.com/oscardias/Simple-Task-Board/blob/master/application/views/task_add.php
这一切都很简单,但第91-93行有一些隐藏的ID,你可能在项目视图页面上没有。在选择视图之前,您无法获得它。因此,您可能希望稍微重写一下,以包含项目的下拉列表或将任务添加到的内容。
我可能会在项目页面中调用task_add.php视图,因此您没有两个副本。如果$ project_id存在,则显示隐藏字段,否则显示项目下拉列表。
视图与控制器或模型之间并没有真正的关联。通常,控制器是中间人,控制视图获取的数据(通常由模型提供)。