Example #1
0
    /**
     * @param $title
     * @param $parentModel
     * @param $relation
     * @param string $identityKey
     */
    public static function generateAjaxListFromRelation($title, $parentModel, $relation, $showFields = array(), $headerNames = array(), $selectsOptions = array())
    {
        /* @var $relation \Illuminate\Database\Eloquent\Relations\HasMany */
        $relationName = $relation;
        $relation = $parentModel->{$relation}();
        $renderer = new Renderer();
        $headers = array();
        $arrayTable = array();
        $paramsRows = array();
        $tableParams['data-parent-id'] = $parentModel->getKey();
        $tableParams['data-controller'] = url('ajax-list');
        $tableParams['data-params'] = get_class($parentModel) . '/' . $relationName;
        $tableParams['data-token'] = md5($title);
        $result = '<div class="row ajaxListContainer">
            <div class="col-md-12">
                <fieldset>
                    <legend>
                        ' . $title . '
                    </legend>



                    <div class="row">
                        <div class="col-md-12 ajaxList">';
        if ($relation->count() > 0) {
            foreach ($relation->get() as $row) {
                $inputs = $renderer->getInputsFromRow($row, $showFields, $selectsOptions);
                $rowTable = array();
                foreach ($inputs as $fieldName => $htmlInput) {
                    $rowTable[$fieldName] = $htmlInput;
                    $headers[$fieldName] = $fieldName;
                    if (isset($headerNames[$fieldName])) {
                        $headers[$fieldName] = $headerNames[$fieldName];
                    }
                }
                $rowTable['acciones'] = '<i style="cursor: pointer;" class="fa fa-remove removeListRow"></i>';
                $rowParams['data-id'] = $row->getKey();
                $paramsRows[] = $rowParams;
                $arrayTable[] = $rowTable;
            }
            $headers['acciones'] = "Acciones";
            $ajaxListParams = array($title, $parentModel, $relationName, $showFields, $headerNames, $selectsOptions);
            \Session::set(self::PREFIX_SESSION_AJAX_LIST . $tableParams['data-token'], $ajaxListParams);
        }
        $table = $renderer->generateTable($headers, $arrayTable, $tableParams, $paramsRows);
        $result .= $table;
        $result .= ' <button class="btn addItem">AƱadir item</button>

                        </div>
                    </div>
                </fieldset>
                <hr>
            </div>
        </div>';
        $result .= $renderer->renderJS();
        return $result;
    }