CodeIgniter: Создать нового помощника?

Вместо использования динамического, когда вам нужно десериализовать JSON, я бы предложил использовать либо:

1- Если вы знаете, что json только содержит свой объект студента:

Student jsonData = JsonConvert.DeserializeObject<Student>(json);

2 - Если вы не знаете, является ли единственным содержимым в вашем JSON сам объект-ученик, но вы знаете, что он не вложен в другой объект, вы можете десериализовать строку целиком и затем выбрать, какой объект вы хотите извлечь:

var parsedObject = JObject.Parse(jsonString);
var studentObject= parsedObject["Student"].ToString();
var responseData = JsonConvert.DeserializeObject<Student>(studentObject);

Редактировать: если он вложенный, вы можете просто перебирать объекты, как если бы вы использовали пример массива:

parsedObject["NestedInThisObject"]["Student"].ToString();
174
задан Kuf 17 February 2013 в 09:57
поделиться

3 ответа

Помощник CodeIgniter - это файл PHP с несколькими функциями. Это не класс.

Создайте файл и вставьте в него следующий код.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('test_method'))
{
    function test_method($var = '')
    {
        return $var;
    }   
}

Сохраните это в application / helpers / . Мы назовем его «new_helper.php»

Первая строка существует, чтобы убедиться, что файл не может быть включен и запущен вне области CodeIgniter. Все после этого самоочевидно.

Использование помощника


Это может быть в вашем контроллере , модели или представлении (не предпочтительно)

$this->load->helper('new_helper');

echo test_method('Hello World');

] Если вы используете этот помощник во многих местах, вы можете загрузить его автоматически, добавив его в файл конфигурации автозагрузки, например <ваше-веб-приложение> \ application \ config \ autoload.php .

$autoload['helper'] = array('new_helper');

-Mathew

370
ответ дан 23 November 2019 в 20:29
поделиться

Чтобы создать нового помощника, вы можете следовать инструкциям от Pixel Developer , но я советую не создавать помощника только для логики, требуемой определенной частью конкретное приложение. Вместо этого используйте эту логику в контроллере, чтобы установить для массивов их окончательные предполагаемые значения. Получив это, вы передаете их в представление, используя Template Parser Class , и (надеюсь) вы можете сохранить представление чистым от всего, что выглядит как PHP, используя простые переменные или пары тегов переменных вместо echos и foreachs. , то есть:

{blog_entries}
<h5>{title}</h5>
<p>{body}</p>
{/blog_entries}

вместо

<?php foreach ($blog_entries as $blog_entry): ?>
<h5><?php echo $blog_entry['title']; ?></h5>
<p><?php echo $blog_entry['body']; ?></p>
<?php endforeach; ?>

Еще одним преимуществом этого подхода является то, что вам не нужно беспокоиться о добавлении экземпляра CI, как если бы вы использовали пользовательские помощники для выполнения всей работы.

11
ответ дан 23 November 2019 в 20:29
поделиться

Some code that allows you to use CI instance inside the helper:

function yourHelperFunction(){
    $ci=& get_instance();
    $ci->load->database(); 

    $sql = "select * from table"; 
    $query = $ci->db->query($sql);
    $row = $query->result();
}
78
ответ дан 23 November 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: