Feda /dev/

eXtreM3

Yo estoy a punto de ponerme a trabajar y aún no he terminado de beber.

4
B

2
N

#10106

A eso le pones Fira Code a 15 y es como dios en patinete. Es lo que uso yo.

1 respuesta
pineda

experiencias con pasarelas de pago con bitcoins?

2 respuestas
r2d2rigo

#10114 pues mira, tu me mandas 100 BTC y yo te compro lo que quieras.

1 respuesta
pineda

#10115 :psyduck:

B

#10114 Bitpay y a día de hoy ninguna queja.

1
neil90

#10113 En putty no funcionan las ligaduras de caracteres, y no me gusta como se ve sin antialias

vincen

Laravel

Alguna otra forma de usar una funcion del controllador en la vista?

No me gusta tener que poner esto arriba del todo en la vista, se puede hacer algo directamente desde el controlador sin tener que modificar el objeto recibido de la consulta del modelo?

<?php use App\Http\Controllers\PostController; ?>

para después usar

@foreach...
{!! PostController::print($post) !!}

No tiene sentido que se pudiera usar funciones del controlador de la vista? xD

3 respuestas
Merkury

#10119 No no tiene sentido.

Por algo se separan.

soek

#10119 Desde el controlador le pasas los datos que la vista necesita.
Si quieres que el server corra una serie de codigo cuando el usuario interactua con la pagina, tu amigo es JavaScript y deberias crear un endpoint or usar el template engine y pedir un template.

1 respuesta
eXtreM3

Curioso que haya tantas búsquedas sobre eso

1 respuesta
vincen

#10121
Otro ejemplo seria el "enviado hace X minutos"

{{ \Carbon\Carbon::parse($post->created_at)->diffForHumans() }}

Antes de mandar $post a la vista, lo suyo seria recorrerlo en el controlador, modificar created_at/añadir nuevo campo "ago" de cada post con el valor nuevo? Tampoco me convence xD

#10122 de ahí es donde he sacado lo que he puesto, pero no me acaba de convencer, por eso vine aquí en busca algo distinto.

2 respuestas
Troyer

#10123 Todo lo que sea parsear datos o modificarlos se hace en el controller, como mucho en las vistas puedes crear helpers para cambiar la manera que enseñas los datos, por ejemplo uno que te enseñe la fecha con X formato.

gohrum

#10119 A ver, para lo que comentas de utilizar una variable en vista, tienes varias opciones.

  • cargas la vista desde el controller y pasas una variable, luego haces el bucle.

    $posts = $posts->all();
            return view('blog.index', [
                'posts' => $posts
            ]);
  • Creas un helper y llamas al helper con getPosts() o algo similar.

  • Te bajas este package de widgets

  • Creas una regla en app/Providers/AppServiceProvider

     view()->composer('posts.sidebar', function($view){
      $view->with('archives', \\App\\Post::archives());
    });

    En este ejemplo indicas que la variable archives está disponible cuando se utilice la vista posts.sidebar

(todo son ejemplos diferentes, no 4 pasos del mismo ejemplo)

#10123 Sobre lo que comentas de carbon, si la llamada la haces directamente con eloquent (no se muchas otras formas de hacerlo sin complicarte la vida), todos los campos de tiempo son instancias de carbon, de forma que te puedes ahorrar todo el parse. En cualquier caso, si no tuvieras la instancia directamente, recomiendo hacer el helper en este caso, una función a la cual le mandas el time, o datetime, o timestamp o lo que sea, y ya pasas a carbon y devuelves. Te ahorrarás mucho spaguetti.

Traber

Los que usáis funciones de un Controller en una View merecéis que os hagan un JFK.

1 1 respuesta
gohrum

#10126 No es lo óptimo, pero a veces el tiempo no es abundante y hay que hacer chapucillas.
Tu eres muy crack de CI no? Por curiosidad, como te montas por ejemplo un footer para toda la web que tenga las últimas noticias? Helper? Widget?

3 respuestas
eXtreM3

#10127 pues mismamente así

<?php

class ControllerNoticias extends CI_Controller {

function __construct() {
    parent::__construct();

    $this->load->database();
    $this->load->model('modelNoticias');
}

public function getNoticias(){
    $data['noticias'] = $this->modelNoticias->getNoticias();
    $this->load->view('head.php');
    $this->load->view('main.php');
    $this->load->view('footer.php', $data);
}
}
1 respuesta
B

#10049 yo.

gohrum

#10128 Vale, pero cuando visitas la home o contacto, ya no te van a salir las noticias, eso es lo que quería decir con "footer para toda la web".

1 respuesta
Merkury

#10127 incluyendo una vista parcial en el trmplate base.

eXtreM3

#10130 ah para toda la web? Pues me lo llevo al autoload general

$autoload['model'] = array('modelNoticias');

y luego simplemente le pasas el data a cada vista en la que quieras el footer

$this->load->view('footer.php', $data);
2 respuestas
Merkury

#10132 por cosas como estas CI deberia arder en el infierno

Merkury

3
Traber

#10127 Pues algo así:

class MY_Controller extends CI_Controller{
	public response_data = array();
	
	public function __construct(){
		parent::__construct();
		
		$this->load->model('noticias_model');
		
		$this->response_data['news_latest'] = $this->noticias_model->get_latest();
	}
}

Luego en cualquier vista de un controlador que extienda a "MY_Controller":

<?php foreach($this->response_data['news_latest'] as $new) : ?>
	<h2><?= $new->title ?></h2>
	<p><?= $new->subtitle ?></p>
<?php endforeach ?>

El truco es: Si seteas una variable pública en el controlador (o en las clases padres), ésta sera accesible desde las vistas, de manera que en lugar de llamar a la función desde la vista, lo que debes hacer es llamarla desde el controlador y almacenar el resultado en una variable que sea accesible desde la vista (variable pública en el controlador). En caso de que lo quieras en toda la web, te mascas un controller en la carpeta CORE que extienda al controlador principal de CI y ya está xD.

Tengo hecho mi pequeño "framework" con esto y me hace putas maravillas.

1
Traber

#10132 Espero que cuando hagas una web las urls no sean: http://www.eXtreM3.com/ControllerNoticias/FuncionVerNoticia/javascript-ha-muerto :P

1 1 respuesta
eXtreM3

#10136 claro que no, faltaría el index.php y el id de la noticia.

http://www.eXtreM3.com/index.php/ControllerNoticias/FuncionVerNoticia/666/javascript-ha-muerto

1
B

Yo creo que el concepto de "vista" en el MVC alguno no lo tiene claro.

2 1 respuesta
Merkury

#10138 empezando por la gente de CI

1 1 respuesta
gohrum

#10139 por menos he matado.

Tema cerrado