Laravel 5 вызывает функцию модели в виде лезвия

Если вам неинтересно случай, то самое простое дело в том, чтобы заставить строку использовать все прописные или строчные буквы перед использованием split.

stringbits = datastring.ToLower().Split("aa")

Если вам интересен случай для интересных бит строки, но не разделителей, тогда я бы использовал String.Replace, чтобы заставить все разделители к конкретному случаю (верхнему или нижнему, не имеет значения), а затем вызовите String.Split, используя соответствующий регистр для разделителя.

strinbits = datastring.Replace("aA", "aa").Replace("AA", "aa").Split("aa")
21
задан Mario Ene 12 March 2015 в 10:46
поделиться

3 ответа

Я решаю проблему. Так просто. Синтаксическая ошибка.

  • Приложение \ Продукт
  • Приложение \ Сервис

enter image description here

Но я также хочу знать, как передать функцию с параметрами для просмотра ....

10
ответ дан Mario Ene 12 March 2015 в 10:46
поделиться

Я столкнулся с подобной проблемой, когда я хотел вызвать функцию, определенную в моем контроллере, с моей точки зрения. Хотя это на некоторое время озадачило меня, пытаясь понять, как добраться до контроллера с точки зрения, оказалось, что это довольно просто.

Я передаю массив своим представлениям с записями данных, которые представление форматирует и представляет пользователю с помощью jQuery DataTables (большой дух). Один столбец в представленной таблице пользовательского интерфейса представляет собой набор кнопок действий, которые необходимо создать для каждой строки на основе содержимого данных в каждой из строк. Полагаю, я мог бы добавить определения кнопок к строкам данных в виде столбца, отправляемого представлениям, но кнопки нужны не всем представлениям. Вместо этого я хотел, чтобы представление, которое нуждалось в них, добавляло их.

В контроллере я передаю ссылку на сам контроллер в представление, как в

->with('callbackController', $this)

я назвал его callbackController, поскольку это то, что я делал. Теперь, на мой взгляд, я могу либо перейти в PHP, чтобы использовать $ callbackController для доступа к родительскому контроллеру, как в

<?php echo $callbackController->makeButtons($parameters); ?>

, либо просто использовать механизм Blade

{!! $callbackController->makeButtons($parameters); ?>

. отлично работает на нескольких контроллерах и представлениях. Я не заметил снижения производительности при использовании этого механизма, и у меня есть одна огромная таблица с более чем 50К строк.

Я еще не пытался передать ссылки на другие объекты (например, модели и т. Д.), Но я не вижу, что это не сработало бы также

Возможно, это не будет элегантно, но, похоже, работа выполнена.

2
ответ дан Ken Christopher 12 March 2015 в 10:46
поделиться

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

Если исходя из вашей структуры, 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

0
ответ дан Jed 12 March 2015 в 10:46
поделиться
Другие вопросы по тегам:

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