Yii2 com tema SPA

Boa tarde galera…

Estou usando o http://blackrockdigital.github.io/startbootstrap-agency/ em meu site. Estou tentando fazer de uma forma inteligente a exibição do meu portfolio como nesse template aí usando modal.

Não to conseguindo achar uma solução legal para carregar essa bagaça toda. Já pensei em jQuery e/ou montar um select com join, mas toda vez que penso nisso fede. rs

Alguém tem alguma ideia de como implementar isso?

Atualmente meu controller está assim:


public function actionIndex()

    {

        $modelAbout = new About();

        $content = $modelAbout->getContentById(1);


        $modelContact = new ContactForm();


        $modelPortfolio = new portfolio();

        $portfolios = $modelPortfolio->getAllPortfolios();


        $modelPortfolioScreen = new portfolioScreen();

        $portfolioScreen = $modelPortfolioScreen->getAllPortfolioScreenByPortfolioId(2);


        if ($modelContact->load(Yii::$app->request->post())

            && $modelContact->contact(Yii::$app->params['personalEmail'])) {

            Yii::$app->session->setFlash('contactFormSubmitted');


            return $this->refresh('#contact');

        }


        return $this->render('index', [

            'content' => $content,

            'modelContact' => $modelContact,

            'portfolios' => $portfolios,

            'portfolioScreen' => $portfolioScreen,

        ]);

    }

Meu problema é na hora de montar o modal que atualmente faz uso do $modelPortfolioScreen, e como podem ver a passagem de parâmetro está hard code, pois usei para testes, mas ainda estou me enrolando em como fazer isso da forma certa.

Resolvi da forma + simples e a que achei q ñ daria certo.

Adicionei um with na consulta no model e ele trouxe o array como queria.

Model


public function getAllPortfolios()

{

    return $this->find()->with('portfolioScreen')->asArray()->all();

}

Resultado


1 => [

        'id' => '13'

        'title' => 'RISCO'

        'subtitle' => 'Sistema Matriz de Risco'

        'description' => '<p>Sistema da intranet do SERPROS para gerenciar os riscos das &aacute;reas da empresa</p>'

        'cover' => 'responder-questionario.png'

        'portfolioScreen' => [

            0 => [

                'id' => '15'

                'portifolioId' => '13'

                'picture' => 'tela-responder-questionario-impacto-frequencia.png'

                'description' => '-'

            ]

            1 => [

                'id' => '16'

                'portifolioId' => '13'

                'picture' => 'tela-responder-questionario-auto-avaliacao.png'

                'description' => '-'

            ]

            2 => [

                'id' => '17'

                'portifolioId' => '13'

                'picture' => 'tela-cadastro-questionario.png'

                'description' => '-'

            ]

            3 => [

                'id' => '18'

                'portifolioId' => '13'

                'picture' => 'tela-cadastro-pergunta.png'

                'description' => '-'

            ]

            4 => [

                'id' => '19'

                'portifolioId' => '13'

                'picture' => 'tela-cadastro-subcategoria-risco.png'

                'description' => '-'

            ]

            5 => [

                'id' => '20'

                'portifolioId' => '13'

                'picture' => 'tela-cadastro-atividade.png'

                'description' => '-'

            ]

        ]

    ]

Vamos ver como vai se comportar com mais registros, Inicialmente serão 6 portfólios e cada portfólio com 7 imagens e descrições.