Если вам неинтересно случай, то самое простое дело в том, чтобы заставить строку использовать все прописные или строчные буквы перед использованием split.
stringbits = datastring.ToLower().Split("aa")
Если вам интересен случай для интересных бит строки, но не разделителей, тогда я бы использовал String.Replace, чтобы заставить все разделители к конкретному случаю (верхнему или нижнему, не имеет значения), а затем вызовите String.Split, используя соответствующий регистр для разделителя.
strinbits = datastring.Replace("aA", "aa").Replace("AA", "aa").Split("aa")
Я решаю проблему. Так просто. Синтаксическая ошибка.
Но я также хочу знать, как передать функцию с параметрами для просмотра ....
Я столкнулся с подобной проблемой, когда я хотел вызвать функцию, определенную в моем контроллере, с моей точки зрения. Хотя это на некоторое время озадачило меня, пытаясь понять, как добраться до контроллера с точки зрения, оказалось, что это довольно просто.
Я передаю массив своим представлениям с записями данных, которые представление форматирует и представляет пользователю с помощью jQuery DataTables (большой дух). Один столбец в представленной таблице пользовательского интерфейса представляет собой набор кнопок действий, которые необходимо создать для каждой строки на основе содержимого данных в каждой из строк. Полагаю, я мог бы добавить определения кнопок к строкам данных в виде столбца, отправляемого представлениям, но кнопки нужны не всем представлениям. Вместо этого я хотел, чтобы представление, которое нуждалось в них, добавляло их.
В контроллере я передаю ссылку на сам контроллер в представление, как в
->with('callbackController', $this)
я назвал его callbackController, поскольку это то, что я делал. Теперь, на мой взгляд, я могу либо перейти в PHP, чтобы использовать $ callbackController для доступа к родительскому контроллеру, как в
<?php echo $callbackController->makeButtons($parameters); ?>
, либо просто использовать механизм Blade
{!! $callbackController->makeButtons($parameters); ?>
. отлично работает на нескольких контроллерах и представлениях. Я не заметил снижения производительности при использовании этого механизма, и у меня есть одна огромная таблица с более чем 50К строк.
Я еще не пытался передать ссылки на другие объекты (например, модели и т. Д.), Но я не вижу, что это не сработало бы также
Возможно, это не будет элегантно, но, похоже, работа выполнена.
Вместо того, чтобы передавать функции или запрашивать их на контроллере, я думаю, что вам нужны отношения на моделях, так как это связанные таблицы в вашей базе данных.
Если исходя из вашей структуры, input_details и продуктов связаны, вы должны поместить определение отношений в свои модели следующим образом:
public class InputDetail(){
protected $table = "input_details";
....//other code
public function product(){
return $this->hasOne('App\Product');
}
}
, тогда, по вашему мнению, вам просто нужно будет сказать:
<p>{{ $input_details->product->name }}</p>
Так проще. Также рекомендуется, чтобы контроллеры выполняли бизнес-логику только для текущего ресурса. Для получения дополнительной информации о том, как это сделать, просто перейдите в документы: https://laravel.com/docs/5.0/eloquent#relationships