2016-07-04 4 views
0

У меня есть базовый контроллер, который получает определенные свойства по умолчанию на основе имени домена для каждого запроса. К ним относятся app_id и language_id.laravel передающее значение от контроллера к модели

Что бы рекомендуемый способ, чтобы получить эти значения, установленные в моих моделях, так что, например, если бы я попытался создать новую Post модель она будет иметь app_id и language_id устанавливаются значения, определенные в моем base_controller.

С уважением, любой ответ.

+0

метод использования __construct в вашей модели. передайте эти значения при инициировании объекта. –

+0

Спасибо Рави, я пробовал использовать __construct на модели и для тестирования просто жестко закодировал значение для app_id, но когда я пытаюсь сохранить новый объект, app_id не сохраняется. – jon

+0

есть ли какая-либо особая причина для ввода «app_id» и «language_id» во все модели? вместо этого создайте модель, которая имеет только эти свойства и сопоставляет их с помощью красноречивых. или вставить их в объект пользователя и передать это значение –

ответ

0

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

Check How to use sessions in Laravel from here

+0

Спасибо theMohammedA, будет ли это рекомендуемым методом наилучшей практики для передачи данных? – jon

+0

Зависит от данных, которые вы храните и насколько чувствительны они, а также где вы храните. т. е. если вы храните сеансы в файлах cookie (а не в db или файле), тогда любой может получить доступ к вашим данным. – theMohammedA

0

Вы можете использовать __consruct метод как предложено в комментарии.

Вот еще одна альтернатива: -

YourController.php

<?php 
namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 

use App\YourModel; 

class YourController extends Controller 
{ 

    public function callModelStaticMethod() 
    { 
     $data = ['appId'=>4, 'languageId'=>5]; 
     YourModel::passDataToModelMethod($data);   
    } 
} 

YourModel.php

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class YourModel extends Model 
{ 

    public static function passDataToModelMethod($data) 
    { 
     var_dump($data); 
     // Write your business logic here. 
     // $newObj = new self; 
     // $newObj->app_id = $data['app_id']; 
     // $newObj->language_id = $data['languageId']; 
     // $newObj->save(); 
    } 

} 
+0

Спасибо @Ravi Hirani за вашу постоянную помощь, поэтому, когда я могу вызвать callModelStaticMethod(), чтобы установить данные? – jon

+0

@jon: Вам не нужно вызывать этот метод. Это было просто. Вы должны рассмотреть код внутри этого метода. С помощью этого кода вы можете передавать данные с контроллера на модель. Один вопрос Как вы получили app_id и language_id в контроллере? –

+0

Я устанавливаю $ data = Domain :: where ('domain', '=', $ _SERVER ['SERVER_NAME']) -> first(); в конструкторе контроллера. – jon

Смежные вопросы