Вы можете выбросить Java Exception, например, IllegalArgumentException
, из уровня JNI, как показано ниже:
//JNIEnv *env,
jclass jcls = env->FindClass("java/lang/IllegalArgumentException");
env->ThrowNew(jcls, "Argument cannot be null.");
Кроме того, вы можете проверить статус исключения в уровне JNI, как показано ниже:
//JNIEnv *env,
jboolean flag = env->ExceptionCheck();
if (flag) {
env->ExceptionClear();
/* code to handle exception */
}
Возможно, я нарушаю какое-то правило MVC, но я всегда просто помещаю свои «фрагменты» в отдельные представления и загружаю их, стиль CodeIgniter, из других представлений, которые нуждаются в них. Практически все мои представления загружают представление верхнего и нижнего колонтитула сверху и снизу соответственно:
<? $this->load->view( "header" ); ?>
//Page content...
<? $this->load->view( "footer" ); ?>
Заголовок может затем включать NavBar таким же образом и т. Д.
это по сути то, что я использую:
function render_partial($file, $data = false, $locals = array()) {
$contents = '';
foreach($locals AS $key => $value) {
${$key} = $value;
}
${$name . '_counter'} = 0;
foreach($data AS $object) {
${$name} = $object;
ob_start();
include $file;
$contents .= ob_get_contents();
ob_end_clean();
${$name . '_counter'}++;
}
return $contents;
}
это позволяет вам вызывать что-то вроде:
render_partial('/path/to/person.phtml', array('dennis', 'dee', 'mac', 'charlie'), array('say_hello' => true));
и в / У path / to / person.phtml есть:
<?= if($say_hello) { "Hello, " } ?><?= $person ?> (<?= $person_counter ?>)
происходит какое-то волшебство, хотя оно может помочь вам лучше понять происходящее. полный файл: view.class.php
Это, к сожалению, совсем не специфично для CodeIgniter, однако я предлагаю вам взглянуть на Savant3 система шаблонов. Это позволяет визуализировать шаблон в строку. Затем вы можете просто прикрепить его туда, куда хотите.
Может быть, что-то подобное в CodeIgniter?
Я могу придумать, как добавить средство при рендеринге представления, чтобы отобразить шаблон, а затем все подпрограммы. - шаблон содержит.
Symfony делает это с помощью своей установки partial / component .
Вот сообщение в блоге, описывающее, как использовать smarty с codeigniter . Также реализована мастер-страница, похожая на asp.net.
I found myself moving from Rails to CI too, and what I did with partials is basically render the partials in the view as a variable and set it from the controller.
So in the view you would have something like (_partial.php):
<h2>Here Comes The Partials</h2>
<?= $some_partials ?>
And you can set it from the controller like:
$this->load->view('the_view',
array('some_partials',
$this->load->view('_partial', array(), TRUE)
)
);
Personally, I prefer to use CI's view instead of ob_start, but that's me =) PS: When loading views, first argument is the view name, second one is the parameters to be passed to the view, and the third one is "ECHO" flag, which basically tells CI whether to render it directly or return the value of the view instead, which is basically what I did in the example.
I don't think it's a good solution though, but it works for me. Anyone has better solutions?
Так работает моя недавно выпущенная Библиотека шаблонов.
Эта библиотека шаблонов также хорошо играет с моей Dwoo реализацией, которая даст вашим взглядам гораздо больше мощности.
.Попробуйте Ocular - http://codeigniter.com/wiki/Ocular_Layout_Library/ - это библиотека шаблонов на основе rails.